提供像这样的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
答案 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' } }
文档: