Extjs4 ExtJS双向复杂数据绑定表单
给出一个JSON数据,如下所示 {name:{firstname:'First name',lastname:'Last name'} 我可以使用模型映射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
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' } }
文件: