[英]extjs 3.4 getModifiedRecords after markDirty not working
我正在使用extjs 3.4,我想使記錄在我使用getModifiedRecords時出現。
dtl.store.getAt(i).markDirty();
這就是我所做的,當我console.log()
,我可以看到dirty:true
並且也進行了modified:{idStyle: "TEST-4", idStyleDtl: 2052, color: 6, colorNm: "BLACK", s1: 0, …}
它清楚地表明它已被修改並且有臟標志,但是當我執行ojbStore.getModifiedRecords()
它僅返回空[]。 我不明白為什么它不返回modified
記錄。.還有其他條件需要更改嗎?
謝謝
因此,讓我們從解決方案入手(單擊X按鈕並查看控制台): FIDDLE
現在,這里發生的是,我在商店中手動調用了我自己的添加函數markDirtyFix
並向其傳遞了一條記錄(我想將其標記為臟記錄)以將其放入修改記錄列表中。 實際上,這是從商店afterEdit
后的復制函數。 我只是評論了update的fireEvent(因為這會強制在更新時發送請求,並且您想使其“僅在本地”變臟):
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 ..返回。
因此,它應該起作用了(但沒有起作用)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.