【问题标题】:Ext js store has Many copy to another storeExt js 商店有很多副本到另一个商店
【发布时间】:2015-10-13 03:10:33
【问题描述】:
我有具有 hasMany 属性的数据存储“a”,尝试通过使用以下代码复制“a”的 hasMany 记录来创建新的存储“b”,但是当我将 b 存储用于组合框时,它会抛出错误说 record.length未定义
var b = Ext.create("Ext.data.store"{
model:'service'});
Ext.getStore("a").each(function(record,id){
for(var i in record){
b.add(record.raw.subservice);
}
})
【问题讨论】:
标签:
javascript
extjs
extjs4
【解决方案1】:
它对我有用,试试这个。希望对你有帮助。
function deepCloneStore (source) {
var target = Ext.create ('Ext.data.Store', {
model: source.model
});
Ext.each (source.getRange (), function (record) {
var newRecordData = Ext.clone (record.copy().data);
var model = new source.model (newRecordData, newRecordData.id);
target.add (model);
});
return target;
}
原source code reference。
【解决方案2】:
您正在尝试迭代存储,而不是您需要迭代 store.data.items。
而且您不需要for cycle 进行记录。
试试这个
var b = Ext.create("Ext.data.store"{
model:'service'
});
Ext.getStore("a").data.items.each(function(record,id){
//You can add multiple records by calling .add method once
b.add(record.data.subServiceItems);
});
如果这没有帮助,请写。