Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs4 ExtJS双向复杂数据绑定表单_Extjs4 - Fatal编程技术网

Extjs4 ExtJS双向复杂数据绑定表单

Extjs4 ExtJS双向复杂数据绑定表单,extjs4,Extjs4,给出一个JSON数据,如下所示 {name:{firstname:'First name',lastname:'Last name'} 我可以使用模型映射 fields: [ {Name: 'firstname', mapping: 'name.firstname'}, {Name: 'lastname', mapping: 'name.lastname'} ] 它允许我们像这样将数据加载到表单中 名字:[名字] 姓氏:[姓氏] 但是,当我们提交表单Ext时,将内容序列化为 { &qu

给出一个JSON数据,如下所示

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

我可以使用模型映射

fields: [
  {Name: 'firstname', mapping: 'name.firstname'},
  {Name: 'lastname', mapping: 'name.lastname'}
]
它允许我们像这样将数据加载到表单中

名字:[名字]

姓氏:[姓氏]

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

{ "firstname": "New first name", "lastname": "New last name"}  
// instead of 
{ "name": { "firstname": "...", "lastname": "..."} }
无论如何,我都可以告诉Ext将对象序列化回嵌套形式


注意:my Edit.js摘自Ext MVC应用程序指南

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

proxy: {
    // other proxy config...
    writer: {
        type: 'json',
        nameProperty: 'mapping',
        expandData: true
    }
}
{ 'name.firstname': 'New first name', 'name.lastname': 'New last name' }
nameProperty
确定每个字段的属性名称的来源:要么是
name
属性,要么是
mapping
属性。因此,使用您的示例,这将生成如下对象:

proxy: {
    // other proxy config...
    writer: {
        type: 'json',
        nameProperty: 'mapping',
        expandData: true
    }
}
{ 'name.firstname': 'New first name', 'name.lastname': 'New last name' }
这正是您想要的,这就是
expandData
的用武之地。这告诉它展开上面示例中以点分隔的属性,并创建嵌套对象

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