首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解耦数组存储

解耦数组存储
EN

Stack Overflow用户
提问于 2011-12-22 13:41:17
回答 2查看 874关注 0票数 0

我发现ExtJS的数组存储是如此紧密地绑定在一起,以至于如果我想将原始文件保存在某个临时存储中,它也会被修改。也就是说,如果我这样做:

Ext.data.ArrayStores A,临时

A={某物}

温度=A

项选择器: store =A

A.remove(一些记录)

我发现Itemselector: store是用A自动修改的,这就是我想要的,但temp也会随着A的修改而修改。如何中断temp和A之间的同步?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-12-23 03:00:04

它不是ExtJS数组存储,它是Javascript!如果你搜索一下,你会发现其他框架也有类似的问题。关于stackoverflow本身的讨论已经足够多了。

现在,通过一个示例来说明您的解决方案:

代码语言:javascript
复制
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()创建对象。但据我所知,这也是一个肤浅的拷贝,因此不会起作用。

票数 1
EN

Stack Overflow用户

发布于 2011-12-22 19:01:31

我猜你想要的是创建一个商店,并保留其原始状态的备份副本?如果是这样的话,你可以创建一个存储,然后只保留它的数据的一个备份,更多的是它的缓存。

代码语言:javascript
复制
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

这只是一种方法,还有更多的方法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8599847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档