【发布时间】:2014-03-04 03:50:34
【问题描述】:
除了遍历存储中的记录并检查脏标志之外,还有更干净的方法吗?
编辑
顺便说一句,我正在使用 ExtJS4。
这里是返回数据的sn-p。注意有一个dirty: true 和modified 对象集(实际上是旧数据,data 对象包含新数据)
data: Ext.Class.Class.newClass
items: Array[3]
0: Ext.Class.Class.newClass
data: Object
incidentCount: 14
incidentKey: "5466BD05-E4DD-4C1F-9F73-61ABAC6D3753"
dirty: true
id: "Ext.data.Store.ImplicitModel-TEDetailIncidencesStore-ext-record-13"
index: 0
internalId: "ext-record-13"
modified: Object
incidentCount: 7
请注意,data 块包含 14 的 incidentCount。这是 NEW 值,modified 块包含 OLD 值 7。
编辑 2
我加载商店:
TimeEntryDetailsStore.load({
params:{
timeEntryKey:"myKey"
}
});
触发后,上述存储成功加载了 3 行。然后,当我改变一个值时,脏标志被设置,你就得到了上面的数据块
谢谢
编辑 3
这是我将使用的代码,除非有人有更好的方法。我不明白为什么getUpdatedRecords() 返回一个空数组。但是哦,好吧。
for(c=0; c < TEDetailIncidencesStore.count(); c++ ) {
if( TEDetailIncidencesStore.data.items[c]["dirty"] == true) {
var dirtyRecord = TEDetailIncidencesStore.data.items[c];
updateTEDetailIncidences(dirtyRecord);
}
}
【问题讨论】:
-
你可以发布你的代码而不是控制台中显示的内容
-
顺便说一句,
store.getNewRecords()返回所有三个记录。既脏又不脏?? -
那么
TimeEntryDetailsStore.getUpdatedRecords()会返回什么?只是一个空数组。我真的需要查看您的网格和商店的代码才能进一步研究。 -
是的,它返回一个空数组
-
这就是我拥有的所有代码。我只是用一些测试数据在 Ext.ready 上加载商店。商店绑定到
Ext.grid.Panel。谢谢