商店有数据后触发的事件

Event that fires once the store has data

我有一个通过两种不同方式填充的代理商店 - 通过 loadData 或通过 load

一旦商店满了,我应该采取某些行动;即要搜索并选择某条记录:

preselectByName:function(name, groupName) {
    var store = this;
    if(store.preselected) return;
    store.preselected = true;
    store.on('load',function() {
        store.selectByName(name, groupName);
        store.preselected = false;
    },store,{single:true});
}

这样调用:

if(store.isLoaded) store.selectByName(name, groupName);
else store.preselectByName(name, groupName);

如果商店通过 load 但不是通过 loadData 填充,则此代码可以正常工作。

是一个事件,由 loadloadRecord 触发,但要小心,它会因对数据集所做的任何更改而触发。

此外:我通常使用它来在 ExtJs 中查找我需要的事件:

Ext.util.Observable.capture(myObj, function(evname) {console.log(evname, arguments);})

它捕获由 myObj 组件触发的所有 ExtJs 事件并将其记录到控制台。

  • 或者您可以创建一个自定义事件,您可以在 loadloadData 之后手动触发该事件,例如:

store.on("load",function(){store.fireEvent("myload")})

store.loadData(...)

store.fireEvent("myload")

然后

store.on("myload",function(){...})

load事件专门用于从远程数据源读取数据。店铺可扩展推出满足您要求的活动

/*
    @event loadrecords Fires whenever records a loaded into the store.
        @param {Ext.data.Model[]} records An array of records
*/
Ext.define('MyApp.data.Store', {
    extend: 'Ext.data.Store',

    load: function() {
        this.callParent(arguments);
        this.fireLoadRecords();
        return this;
    },

    fireLoadRecords: function() {
        this.fireEvent('loadrecords', this.getRange());
    },

    loadRecords: function(records, options) {
        this.callParent(arguments);
        this.fireLoadRecords();
    }
});

http://docs.sencha.com/extjs/6.2.0/classic/Ext.data.ProxyStore.html#event-load