首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >markDirty不工作后的extjs 3.4 getModifiedRecords

markDirty不工作后的extjs 3.4 getModifiedRecords
EN

Stack Overflow用户
提问于 2018-05-25 00:48:30
回答 1查看 256关注 0票数 0

我使用的是extjs3.4,我想让记录在我使用getModifiedRecords时出现。

这就是我所做的,当我console.log()它时,我可以看到dirty:truemodified:{idStyle: "TEST-4", idStyleDtl: 2052, color: 6, colorNm: "BLACK", s1: 0, …}

它清楚地显示它已被修改,并且有脏标志,但当我执行ojbStore.getModifiedRecords()时,它只返回空。我不明白为什么它不返回modified记录..我还需要改变什么其他条件吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-05-27 05:27:19

因此,让我们从解决方案开始(单击X按钮并查看控制台):FIDDLE

现在,这里发生的事情是,我在存储中手动调用自己添加的名为markDirtyFix的函数,并向它传递一条记录(我想将其标记为脏),以将其放入已修改记录列表中。实际上,它是从存储中复制的函数afterEdit。我刚刚注释了update的fireEvent (因为这强制在update时发送请求,而您想让它“只在本地”变脏):

代码语言:javascript
复制
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()看起来像这样(来自官方文档):

代码语言:javascript
复制
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返回虚数。

所以它应该是有效的(但没有)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50514430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档