存储加载后ExtJs的事件

存储加载后ExtJs的事件,extjs,Extjs,我想在storeLoad()之后在ExtJS网格中触发一个事件。是否有任何事件,我可以使用以外的渲染后 afterrender: function(grid) { var store = grid.getStore(); if (store.isLoaded()) { // not getting debugger here. } }, 只需在您的商店上使用load事件: va

我想在storeLoad()之后在ExtJS网格中触发一个事件。是否有任何事件,我可以使用以外的渲染后

afterrender: function(grid) {
            var store = grid.getStore();
            if (store.isLoaded()) {
               // not getting debugger here.
            }
        },

只需在您的商店上使用load事件:

var store = grid.getStore();
store.on('load', function(){
    //Your function here
});
编辑:您应该检查存储是否已加载:

var handler = function(){ /* Your function here */ }
if (store.isLoaded()) {
    handler.apply(this);
} else {
    store.on('load', handler, this);
}

仅在@ludovic feltz请求中发布此消息:)

<>我认为这是一个错误而不是一个正确的解决办法…< 基本上,在渲染之后,我会稍微延迟isLoaded检查,如果没有加载,我会每100毫秒重复一次,直到加载存储以设置排序,或者使用它执行任何其他操作

我这样做是因为
store.isLoading()
给了我
false
:(

我刚刚添加了上面的console.log以查看发生了什么,结果如下:

_setInitialSorting 1593589691157 false false
_setInitialSorting 1593589691258 true false
_setInitialSorting 1593589691360 true false
_setInitialSorting 1593589691584 false true
不过,我希望我以前能做到这一点:D

因此,在
afterrender
事件中,
isLoading
似乎最初是
false
,但100毫秒后它变为
true

因此,我将超时时间改为10毫秒,以获取一些垃圾邮件:

_setInitialSorting 1593589864967 false false
_setInitialSorting 1593589865007 true false
_setInitialSorting 1593589865016 true false
...
_setInitialSorting 1593589865159 true false
_setInitialSorting 1593589865165 true false
_setInitialSorting 1593589865383 false true
同样,在
afterrender
事件之后的第一个
isLoading
检查是
false
,然后变为
true

顺便说一句,为了充分披露,我尝试了:

listen: {
    store: {
        '*': {
            load: 'onStoreLoaded',
        }
    }
},

但它只是让UI一直闪烁,不显示任何数据:(

谢谢你的回答。但我应该在哪里做呢?在init函数中还是在afterrender中function@David在afterrender函数中,应fine@David或者,如果您的商店在调用load()之前将autoload设置为false非常感谢Ludovic@PredragStojadinović可能您的存储已经加载?您应该检查是否存在这种情况,然后调用您的函数(如果已经加载)。
listen: {
    store: {
        '*': {
            load: 'onStoreLoaded',
        }
    }
},