我使用的是extjs3.4,我想让记录在我使用getModifiedRecords时出现。
这就是我所做的,当我console.log()它时,我可以看到dirty:true和modified:{idStyle: "TEST-4", idStyleDtl: 2052, color: 6, colorNm: "BLACK", s1: 0, …}
它清楚地显示它已被修改,并且有脏标志,但当我执行ojbStore.getModifiedRecords()时,它只返回空。我不明白为什么它不返回modified记录..我还需要改变什么其他条件吗?
谢谢
发布于 2018-05-27 05:27:19
因此,让我们从解决方案开始(单击X按钮并查看控制台):FIDDLE
现在,这里发生的事情是,我在存储中手动调用自己添加的名为markDirtyFix的函数,并向它传递一条记录(我想将其标记为脏),以将其放入已修改记录列表中。实际上,它是从存储中复制的函数afterEdit。我刚刚注释了update的fireEvent (因为这强制在update时发送请求,而您想让它“只在本地”变脏):
afterEdit: function(record){
if(this.modified.indexOf(record) == -1){
this.modified.push(record);
}
this.fireEvent('update', this, record, Ext.data.Record.EDIT);//removed
},所以奇迹发生了,store.getModifiedRecords()返回了包含在数组中的记录。
现在谈谈问题。所以问题是markDirty()看起来像这样(来自官方文档):
markDirty: function(){
this.dirty = true;
if(!this.modified){
this.modified = {};
}
this.fields.each(function(f) {
this.modified[f.name] = this.data[f.name];
},this);
}这里没有任何东西会调用afterEdit或类似的东西来使您的记录在存储级别上变脏(正如您所看到的,它只在记录级别上变脏)。也许有人说它只能在记录级上使用,但markDirty文档描述说:
将记录标记为脏的
会导致Ext.data.Store.getModifiedRecords返回虚数。
所以它应该是有效的(但没有)。
https://stackoverflow.com/questions/50514430
复制相似问题