【问题标题】:Ext JS - What is the best way to clone to and from a store?Ext JS - 进出商店的最佳克隆方式是什么?
【发布时间】:2017-05-04 14:38:12
【问题描述】:

我有一个永久的数据存储。 我想将记录克隆到临时数据存储,对记录进行更改,然后将修改后的记录复制回永久存储。

我这样创建了临时商店:-

permanentStore.each(function (record) { 
    temporaryStore.add(record.copy());}
);

如何只复制修改后的记录? 我需要为所有修改的记录使用 id 查找匹配的记录还是有其他简单的方法?

permanentStore.findRecord('Id','temporaryStoreRecordId') 

是否有任何干净的克隆方式,以便将更改自动应用于永久存储?

【问题讨论】:

  • 首先,如果更改自动应用于永久副本,则它不是克隆。那么你到底想要什么?如果您只制作临时存储,为什么需要从临时存储中查找修改的记录。您可以直接将您的永久存储替换为已修改记录的临时存储,对吗?我的建议是,如果我得到你的要求是正确的,你可以使用 Ext.clone。否则请详细说明
  • @Anindya:您使用的方法还可以,但是您可以使用更清洁的方法,只需像上面提到的 Harshit 那样克隆存储。现在要复制修改后的记录,您需要迭代克隆存储并设置修改记录到原始存储中的每个相应记录。试试这个,如果有效,请回复
  • 如果应该就地编辑记录,您究竟需要临时存储做什么?
  • 我认为这里不需要临时复制商店。您可以编辑永久存储中的记录。如果您想撤消未保存的记录更改,请使用reject method - 如果您担心保留原始记录,请使用此选项。我想不出您可能想要克隆整个商店的另一个原因 - 了解您的最终目标可能会有所帮助

标签: extjs extjs5 extjs-stores


【解决方案1】:

您可以使用clone方法克隆所有records

var clonerecord = Ext.clone(records);

temporaryStore.add(cloneRecord);

temporaryStore.getModifiedRecords(); 获取修改记录。

temporaryStore.getNewRecords(); 获取新记录。

temporaryStore.getRemovedRecords(); 获取删除记录。

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2013-05-01
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多