EXTJS Store加载回调问题

7
我按照以下方式加载我的商店:

我如下载我的商店:

store.load({
    params: {
        paramMap
    },
    callback: function(records, options, success) {
        if (success) {
            var form = formPanel.getForm();
            var jsonStr = Ext.JSON.encode(records[0].raw);
            var jsonObj = Ext.JSON.decode(jsonStr);
            form.loadRecord(jsonObj);
        }
    }
});

问题在于我只想在加载store时触发此回调函数。之后,我希望删除它,这样当我重新加载或再次加载store时,它不会再次调用此回调函数。

有任何想法吗?我尝试将回调函数放在options选项中,但似乎不起作用。

1个回答

16

不太确定问题所在。 只有当回调函数加载时,存储库才会使用回调函数进行调用。

store.load({callback:myCallback});
//callback will be called
store.load();
//callback will not be called

如果您只想执行一次操作,可以使用将 single 设置为 true 的侦听器。 相比回调函数,我更喜欢使用监听器。

store.on('load', onStoreLoad, this, {single:true});

回调函数的参数API与加载监听器略有不同,请查看文档以了解详情。


你是正确的。我在 store 上添加了 beforeload 监听器后意识到,实际上我正在调用 reload,它使用与最初调用相同的参数,其中包括我的回调函数。所以我将其切换为调用 load。谢谢。 - b3labs
在第一次调用时,您可能还需要传递作用域:store.load({callback:myCallback, scope:this}); - What Would Be Cool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接