我有一个JSON
,例如:
{
"id": "d258832c-c454-4961-9013-40ab222930d9",
"name": "CDS_BU",
"description": null,
"parentId": null,
"group": {
"id": "ef01eb78-2ae0-43ed-844e-57a825b046eb",
"name": "GroupForCDSBU2"
}
}
我有一个 form
和该对象的 View ,但加载时无法在表单中显示 group.name
的当前值。
当前表单从 Ext.form.Panel
扩展,我使用 initComponent
将值分配给表单。即:
me.items = [{
name: 'name',
xtype: 'textfield',
fieldLabel: "Name"
}, {
name: 'description',
xtype: 'textareafield',
fieldLabel: "Comments"
}]
此功能当前有效,并显示 description
和 name
中的值。
我为该组创建了一个模型,例如:
Ext.define('GroupModel', {
extend: 'Ext.data.Model',
fields: [{
name: 'id',
defaultValue: null,
type: 'string',
useNull: true
}, {
name: 'name',
defaultValue: null,
type: 'string',
useNull: true
}]
});
还有另一个父对象模型,我们将其命名为Parent
,例如:
Ext.define('ParentEditModel', {
extend: 'Ext.data.Model',
fields: [
{
name: 'name',
defaultValue: ''
}, {
name: 'description',
defaultValue: ''
}
...
]
对于最后一个模型,我尝试了 hasOne
关联
喜欢:
hasOne: {model: 'GroupModel', name: 'group' }
并向其中添加一个带有以下签名的新字段:
{name: 'groupName', mapping: 'group.name'}
显然这不起作用,因为据我了解,这需要一个 associationKey
,而我当前的模型
中没有。
简而言之,如何将这两个参数(组:id、名称)映射到表单 View 中的输入。
最佳答案
在这种情况下,您不需要关联模型,您可以使用父模型中的映射,并且不需要关联键或其他任何内容。
这是一个jsfiddle:http://jsfiddle.net/ncLvaupn/
Ext.define('ParentEditModel', {
extend: 'Ext.data.Model',
fields: [
{
name: 'name',
defaultValue: ''
}, {
name: 'description',
defaultValue: ''
}, {
name: 'groupName',
mapping: 'group.name'
}
...
]
关于javascript - 将属性从嵌套模型映射到 extjs 表单 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30088041/