ExtJS双向复杂数据绑定表

时间:2011-12-13 03:12:08

标签: extjs4

提供像这样的JSON数据

  

{name:{firstname:'First Name',lastname:'Last Name'}}

我可以建模使用模型映射

fields: [
  {Name: 'firstname', mapping: 'name.firstname'},
  {Name: 'lastname', mapping: 'name.lastname'}
]

它允许我们将数据加载到这样的形式

  

名字:[名字]

     

姓氏:[姓氏]

但是,当我们提交表单时,将内容序列化为

{ "firstname": "New first name", "lastname": "New last name"}  
// instead of 
{ "name": { "firstname": "...", "lastname": "..."} }

无论如何,我可以告诉Ext将对象序列化回巢形式,问候。

P.S:我的Edit.js取自Ext MVC应用指南http://docs.sencha.com/extjs/4.2.2/#!/guide/application_architecture

1 个答案:

答案 0 :(得分:3)

您需要在json writer中配置两个属性。您需要设置nameProperty: 'mapping'expandData: true。例如,如果要在模型中的代理中配置此编写器,则它将如下所示:

proxy: {
    // other proxy config...
    writer: {
        type: 'json',
        nameProperty: 'mapping',
        expandData: true
    }
}

nameProperty确定每个字段的属性名称来自何处:name属性或mapping属性。因此,使用您的示例,这将生成如下对象:

{ 'name.firstname': 'New first name', 'name.lastname': 'New last name' }

这是你想要的,这就是expandData的用武之地。这告诉它在上面的例子中展开那些以点分隔的属性,并创建嵌套对象。

{ 'name': { 'firstname': 'New first name', 'lastname': 'New last name' } }

文档: