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

时间:2015-05-06 21:36:53

标签: javascript json extjs extjs4

我有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还没有。{/ p>

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

1 个答案:

答案 0 :(得分:0)

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

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

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