如何在 ExtJS 3.4 中添加/合并多个 Ext.data.JsonStore
Posted
技术标签:
【中文标题】如何在 ExtJS 3.4 中添加/合并多个 Ext.data.JsonStore【英文标题】:How to add/merge multiple Ext.data.JsonStore together in ExtJS 3.4 【发布时间】:2014-09-09 20:26:44 【问题描述】:我想将多个 Ext.data.JsonStore 和数组数据添加/合并到单个 Ext.data.JsonStore。
代码下方-
Store1: function (s)
var tmp = [];
var store = new Ext.data.JsonStore(
autoDestroy: true,
url: 'url1,
root: 'rows',
listeners:
load:
fn: function (store, records, options)
store.data.each(function (item, index, totalItems)
tmp.push([item.data.Index, item.data.Method]);
);
s.loadData(tmp);
,
fields: ['Index','Method']
);
store.load();
,
Store2: function (s)
var tmp = [];
var store = new Ext.data.JsonStore(
autoDestroy: true,
url: 'url2,
root: 'rows',
listeners:
load:
fn: function (store, records, options)
store.data.each(function (item, index, totalItems)
tmp.push([item.data.ID, item.data.Type]);
);
s.loadData(tmp);
,
fields: ['ID', 'Type']
);
store.load();
,
Store3: function ()
var tmpGuests = [];
var partyInfo = Ext.getCmp('party-tree');
var parties = partyInfo.root.childNodes;
Ext.each(parties, function (party)
Ext.each(party.childNodes, function (guest)
tmpGuests.push([guest.id, guest.text]);
, this);
, this);
return tmpGuests;
并像这样尝试过 -
AllStore: function (s)
var tmp = [];
var storeTest;
storeTest = new Ext.data.JsonStore(
autoDestroy: true,
url: 'Url1,
root: 'rows',
listeners:
load:
fn: function (store, records, options)
store.data.each(function (item, index, totalItems)
tmp.push([item.data.Index, item.data.Method]);
);
s.loadData(tmp);
Store2.loadData(records, true);
,
,
fields: ['ID', 'Type']
);
storeTest.load();
这不起作用,我还需要添加数组数据(Store3)。这怎么可能?
我正在使用 extJS 3.4
【问题讨论】:
【参考方案1】:不确定您的解决方案应该有多强大,但您应该能够利用 add 和 getRange 方法。
假设所有商店都已加载,您可以执行以下操作:
var allStore = new Ext.data.JsonStore();
allStore.add(store1.getRange());
allStore.add(store2.getRange());
//..
如果它们尚未加载,您可以使用通用侦听器添加它们,如下所示:
var allStore = new Ext.data.JsonStore(),
addToAllStore = function(store)
allStore.add(store.getRange());
store1.on('load', addToAllStore);
store2.on('load', addToAllStore);
store3.on('load', addToAllStore);
【讨论】:
+1 虽然您可能希望在加载事件添加一次后取消对其进行监控。 @karlipoppins 如果业务逻辑需要,您可以随时将single:true
添加到侦听器选项中。以上是关于如何在 ExtJS 3.4 中添加/合并多个 Ext.data.JsonStore的主要内容,如果未能解决你的问题,请参考以下文章