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

zdz8207 阅读:16 2024-09-07 23:24:14 评论:0

我有一个模型:

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

请您参考如下方法:

终于找到问题了。 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' 
    }, 


标签:ajax
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号