Ext.JS阻止代理发送额外字段

Aru*_*n V 4 tree json extjs extjs4

这是我的模型:

Ext.define('A.model.Group', {
    extend: 'Ext.data.Model',
    fields:['id', 'name'],
    proxy: {
        type: 'rest',
        url: '/group',
        reader: {
            type: 'json',
            root: 'data'
        },
        writer: {
            type: 'json',
            writeAllFields: false
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

该模型通过TreeStore在Tree中使用

的问题是,当一个PUT,POSTDELETE方法完成,而不是从在JSON有效载荷中的模型仅发送领域,从领域Ext.data.NodeInterface也被发送.这是一个示例有效负载:

{"id":"","name":"TestGroup","parentId":"8","index":0,"depth":3,"checked":null}
Run Code Online (Sandbox Code Playgroud)

我不想要额外的字段parentId,indexdepth,并checked发送.做这个的最好方式是什么?我不想在服务器上忽略它们.

nsc*_*rob 5

如果您不想仅向服务器发送特定数据,则writeAllFields不是解决方案,因为它设置为false,它只发送修改后的字段.你的问题的解决方案是定义你自己的编写器,并在getRecordData这里重写方法是一个可行的例子:

var newWriter = Ext.create('Ext.data.writer.Json',{
  getRecordData: function(record){
       return {'id':record.data.id,'name':record.data.name};
  }
})

Ext.define('A.model.Group', {
    extend: 'Ext.data.Model',
    fields:['id', 'name'],
    proxy: {
        type: 'rest',
        url: '/group',
        reader: {
            type: 'json',
            root: 'data'
        },
        writer: newWriter
    }
});
Run Code Online (Sandbox Code Playgroud)