我发现ExtJS的数组存储是如此紧密地绑定在一起,以至于如果我想将原始文件保存在某个临时存储中,它也会被修改。也就是说,如果我这样做:
Ext.data.ArrayStores A,临时
A={某物}
温度=A
项选择器: store =A
A.remove(一些记录)
我发现Itemselector: store是用A自动修改的,这就是我想要的,但temp也会随着A的修改而修改。如何中断temp和A之间的同步?
谢谢
发布于 2011-12-23 03:00:04
它不是ExtJS数组存储,它是Javascript!如果你搜索一下,你会发现其他框架也有类似的问题。关于stackoverflow本身的讨论已经足够多了。
现在,通过一个示例来说明您的解决方案:
var myStore = Ext.create('Ext.data.ArrayStore',{
fields: [
{name: 'fname',type: 'string'},
{name: 'age', type: 'int'}
],
data: [
['Sammy',28],
['Steve', 31],
['Albert', 30],
['Abdel', 28],
['Godwin',28]
]
});
var data = [];
var dupStore = new Ext.data.Store({
fields: [
{name: 'fname',type: 'string'},
{name: 'age', type: 'int'}
]
});
// Copy all records to a new array...
myStore.each(function (rec){
data.push (rec.copy());
});
dupStore.loadRecords(data); // Your duplicate store请注意我们是如何从myStore创建记录副本的。像data = myStore.data这样的简单赋值不会创建一个新的数组!
另一种方法是使用clone()创建对象。但据我所知,这也是一个肤浅的拷贝,因此不会起作用。
发布于 2011-12-22 19:01:31
我猜你想要的是创建一个商店,并保留其原始状态的备份副本?如果是这样的话,你可以创建一个存储,然后只保留它的数据的一个备份,更多的是它的缓存。
Ext.data.ArrayStores A;
//fill a with records
var cacheOfAData = A.data;//Takes all the data in the store and caches it.
A.remove(someRecords);//Remove records the cacheOfAData should still remain with the original data这只是一种方法,还有更多的方法。
https://stackoverflow.com/questions/8599847
复制相似问题