【问题标题】:After setting record to dirty, store commits all fields将记录设置为脏后,存储提交所有字段
【发布时间】:2012-04-10 21:36:39
【问题描述】:

我正在更改记录的一些值,然后将其设置为脏。 虽然将 writeAllFields 设置为字段(如果我通过编辑表单编辑我的数据,它工作正常)。

控制器方法:

activateDeactivate: function(grid, selection, active) {
    for(var i = 0; i < selection.length; i++) {
        selection[i].data.status = (active) ? 1 : 0;
        selection[i].setDirty();
    }
    var store = this.getStore('Creatives');
    store.sync();
}

商店作家:

writer:{
        type:'json',
        writeAllFields:false,
        allowSingle: false //  always wrap data in an array
        //root: 'data'
    }

更新控制器方法:

activateDeactivate: function(grid, selection, active) {
    for(var i = 0; i < selection.length; i++) {
        selection[i].data.status = (active) ? 1 : 0;
        values = selection[i].data;
        selection[i].set(values);
    }
    var store = this.getStore('Creatives');
    store.sync();
}

【问题讨论】:

    标签: extjs extjs4 extjs-mvc


    【解决方案1】:

    您不需要将整个记录设置为脏。您可以只set() 新值。它们是否脏是通过比较Record.modifiedRecord.data 在内部确定的。

    【讨论】:

    • 请看我的更新。它根本不会向我的后端发送任何内容。
    • 那么它是发送所有字段还是根本不发送?你应该一次问一个问题。
    • 如果我不将记录设置为脏,则没有 ajax 请求发送到我的服务器。
    • 我猜,set 无法正常工作,因为您正在篡改私有财产 data。见docs.sencha.com/ext-js/4-0/source/…,尤其是currentValue = me.get(fieldName);开头的部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    相关资源
    最近更新 更多