【问题标题】:ExtJS 6. Use data from 1st store in 2nd store constructor [closed]ExtJS 6.在第二个存储构造函数中使用来自第一个存储的数据[关闭]
【发布时间】:2016-08-02 23:53:46
【问题描述】:

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

【问题讨论】:

  • 为什么不能只使用store2.loadData()?一个简单的store2.loadData(store1.getRange()) 应该可以工作。
  • 我试过了,没用。不知何故,数据仅在所有构造函数之后加载。即使我使第一家商店同步。
  • 您确实应该发布一些代码来了解您的工作流程。目前,我认为您的工作流程不起作用。您永远不需要在存储构造函数中提供任何数据。编辑:或者,你的意思不是他的构造函数,而是配置对象。见这里:docs.sencha.com/extjs/6.0/6.0.2-classic/#!/api/Ext.data.Store

标签: extjs store


【解决方案1】:

这很容易,但没用。

要实现你想要的,你必须从 store1 的 load() 事件创建 store2,并且在所述 load 事件之前你不能将 store 绑定到任何组件。

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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2013-02-10
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多