簡體   English   中英

extjs 3.4 getModifiedRecords markDirty后不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM