ExtJS 6.使用第二个商店构造函数中第一个商店的数据

时间:2016-04-12 11:33:35

标签: extjs store

有2家商店。我需要第二个商店构造函数中第一个商店的数据。怎么办呢?

1 个答案:

答案 0 :(得分:0)

这很容易,但没用。

要实现您想要的功能,您必须从store1的load()事件创建store2,并且您可能无法在所述加载事件之前将存储绑定到任何组件。

Ext.define('MyApp.store.Store1',{
    ...
    listeners:{
        load:function(store, records) {
            var store2 = Ext.getStore("store2") || Ext.create('MyApp.store.Store2',{
                store1data: records
            });
            Ext.getCmp("someCombobox").bindStore(store2); // you would have to use ext-empty-store on the combobox before, or else it may trigger store creation too early
        }

但这不是好的编程风格,也没有任何实际用途。通常,只要store1获取新数据,您就会再次为store2调用一些函数。在商店建设期间,您几乎不需要做任何事情,之后使用reconfigure或其他商店方法无法完成。 (值得注意的例外:您必须在构造期间决定它是数组存储还是json存储或树存储)。

因此,例如,您可以在store2上定义一个方法,并在重新加载store1之后调用它:

store2.someFunction = function(store1Records) {
    var store2 = this;
    Ext.each(store1Records,function(record) {
        store2.getProxy().setExtraParam(record.get("paramName"),record.get("paramValue"));
    });
    store2.load();
}

store1.on('load',function(store, records) {
    store2.someFunction(records);
});