【发布时间】:2014-01-21 01:37:34
【问题描述】:
我有两家商店:
-
FAQs- 包含很多我的物品的模型 -
FAQ- 包含一个模型。
在查看模式下,我使用FAQs(查看所有项目),在编辑模式下,我使用FAQ 只是为了处理一个项目而不是加载所有项目。
完成编辑并保存FAQ 后,我需要在FAQs 中找到该项目并在那里进行更改,就像我在FAQ 中所做的那样。我不使用网络。
我知道两种方法:
1)在FAQs中找到需要的记录并在那里替换
_updateFaqsStore: function() {
var faqsStore = Ext.data.StoreManager.lookup("faqs.FAQs");
var activeRec = this.activeRecord;
var index = faqsStore.indexOf( faqsStore.findRecord('id',activeRec.get('id')) ); // index in faqsStore of activeRec
faqsStore.remove(faqsStore.findRecord('id',activeRec.get('id'))); // remove old rec
faqsStore.insert(index, activeRec); // insert new - activeRec
但是对象结构不一样(虽然我用的是同一个模型)
2) 在FAQs 中找到需要的记录并设置每个字段
var faqsItem = faqsStore.findRecord('id', activeRec.get('id')); // find same item in FAQs store
faqsItem.set("myField", activeRec.get('myField')); // make changes in FAQs as in FAQ
但我需要枚举所有字段。
也许,还有其他出路?请帮帮我!
【问题讨论】:
-
I don't use network是什么意思?你从哪里得到这些数据的? -
我的意思是,为了从另一个商店更新一个商店的记录,我不需要互联网。但我使用 i-net 获取所有数据并稍后保存
-
那么,记录更新后为什么不使用store reload功能呢!
-
我需要尽量减少对服务器的请求。只是为了在这两个商店之间交换数据
标签: extjs model extjs4 store extjs-mvc