将 属性 从嵌套模型映射到 extjs 表单视图

Mapping property from nested model into extjs form view

我有一个 JSON 喜欢:

{
 "id": "d258832c-c454-4961-9013-40ab222930d9",
 "name": "CDS_BU",
 "description": null,
 "parentId": null,
 "group": {
   "id": "ef01eb78-2ae0-43ed-844e-57a825b046eb",
   "name": "GroupForCDSBU2"
 }
}

我有一个 form 和这个对象的视图,但是我无法在加载时在表单中显示 group.name 的当前值。

当前表单扩展自 Ext.form.Panel,我正在使用 initComponent 将值分配给表单。即

    me.items = [{
        name:       'name',
        xtype:      'textfield',
        fieldLabel: "Name"
    }, {
        name:       'description',
        xtype:      'textareafield',
        fieldLabel: "Comments"
    }]

这当前有效并显示来自 descriptionname 的值。

我为小组创建了一个模型,例如:

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,而我当前的 model.

中没有

简而言之,如何将这两个参数(组:id,名称)映射到表单视图中的输入。

在这种情况下,您不需要关联模型,您可以使用父模型中的映射,不需要关联键或其他任何东西。

这是一个 jsfiddle:http://jsfiddle.net/ncLvaupn/

 Ext.define('ParentEditModel', {
   extend: 'Ext.data.Model',
   fields: [
   {
     name: 'name',
     defaultValue: ''
   }, {
    name: 'description',
    defaultValue: ''
   }, {
    name: 'groupName',
    mapping: 'group.name'
   }
   ...
   ]