Extjs代理只是将脏字段发布到服务器,而不是所有字段

时间:2014-08-13 12:22:26

标签: ajax extjs model proxy

我有一个模特:

Ext.define('CrudTest.model.User', {
extend: 'Ext.data.Model',
idProperty: 'Id',
fields: [
     { name: 'Id', type: 'int' },
    { name: 'Name', type: 'string' },
    { name: 'PhoneNumber', type: 'int' },
    { name: 'Address', type: 'string' },
    { name: 'StateId', type: 'int', reference: 'State' },
],
validators: [
    { type: 'presence', field: 'Name', message: 'define name, please' },
    { type: 'length', field: 'PhoneNumber', max: 8, messsage: 'lower than 8 digit' },

],
proxy: {
    type: 'ajax',
    api: {
        create: 'home/new',
        read: 'home/users',
        update: 'home/Edit',
        destroy: 'home/Delete'
    },
},

});

以及通过 loadRecord()加载数据的表单以及我提交按钮的处理程序代码:

    var form = this.up('form').getForm();
      if (form.isValid()) { 
              form.getRecord().save();
       }

它通过我的代理模型提出了一个帖子请求。但请求的主体只有脏(编辑)字段。为什么我没有其他领域?

但在请求正文中我只有脏字段。为什么?我知道updateRecord()使用 getFieldValues([onlyDirty = false]),如何发送所有字段值?

我使用extjs 5

2 个答案:

答案 0 :(得分:6)

终于找到了问题。 Ext.data.writer.Writer有一个配置属性 writeAllFields

所以我将代理更改为:

proxy: {
    writer:{ writeAllFields:true },
    type: 'ajax', //also works with type: 'direct',
    api: {
        create: 'home/new',
        read: 'home/users',
        update: 'home/Edit',
        destroy: 'home/Delete'
    },

答案 1 :(得分:0)

您可以在模型上将crtical:true设置为您想要写入的任何字段,无论是否更改,例如

0x0A