Extjs形式:加载数据

时间:2011-10-04 15:08:45

标签: extjs extjs4

我想将json数据加载到表单中。

我的json:

{
    "success": "true",
    "data": {
        "operation[id]": "1199",
        "operation[startdate]": "2011-10-04 08:00:00",
        "operation[starthour]": "08:00",
        "operation[enddate]": "2011-10-04 18:00:00",
        "operation[endhour]": "18:00",
        "operation[year]": "2011",
        "operation[abscomment]": "",
        "operation[person_id]": "13",
        "operation[Mission]": {
            "id": "1",
            "operation_id": "1199",
            "subject": null
        }
    }
}

它类似于操作[id],但不适用于操作[Mission] [id]。

以我的形式:

{
  xtype: 'textfield',
  fieldLabel: 'Subject',
  name:'operation[Mission][subject]',
  anchor: '50%',
  margin: '15 10 5 10',
  allowBlank: false,
  blankText:'required'
},

4 个答案:

答案 0 :(得分:3)

要使操作[Mission] [id]有效,您必须更改JSON结构并删除一些嵌套。 名称只是一个字符串标识符,您不能用它来表示如何从嵌套的JSON结构中获取数据。

{
    "success": "true",
    "data": {
        "operation[id]": "1199",
        "operation[startdate]": "2011-10-04 08:00:00",
        "operation[starthour]": "08:00",
        "operation[enddate]": "2011-10-04 18:00:00",
        "operation[endhour]": "18:00",
        "operation[year]": "2011",
        "operation[abscomment]": "",
        "operation[person_id]": "13",
        "operation[Mission][id]":"1",
        "operation[Mission][operation_id]":"1199",
        "operation[Mission][subject]":null
    }
}

答案 1 :(得分:1)

目前你不能在表单字段定义中使用name ='property.subProperty':(。

因此,为了使这项工作,我恢复逻辑 - 添加(冗余)字段定义到模型:

Ext.define('operation', {
  extend: 'Ext.data.Model',
  fields: [
    'id',
    'startDate',
    'endDate',
    ...
    {name: 'missionId', mapping: 'mission.id'}
  ]
});

然后您可以创建一个表单字段,如:

{
  xtype: 'displayfield',
  name: 'missionId',
  ...
}

它将填充在form.loadRecord()上。

在你的情况下,JSON属性名称有点奇怪,因此映射可能有点困难,所以最好使用转换函数。

答案 2 :(得分:0)

或者,您可以使用您可能已在其他位置加载的对象中的数据设置字段的值。


理想情况下,您的模型对象和表单字段的名称匹配,然后您可以在传入获取的模型记录的表单上执行loadRecord。但是,如果情况并非如此,并且您从另一个模型或只是Ajax请求中读取了大量数据,则仍可以通过设置字段的“value”属性来设置包含此数据的表单字段。如果需要,您可以深入了解Model对象的data属性,如下所示:“myModel.data.subObject.someProperty”

答案 3 :(得分:0)

如果它是1:1的嵌套关系,一切正常, 但如果你有1:N结构:

 "operation[id]": "1199",
        "operation[startdate]": "2011-10-04 08:00:00",
        "operation[starthour]": "08:00",
        "operation[enddate]": "2011-10-04 18:00:00",
        "operation[endhour]": "18:00",
        "operation[year]": "2011",
        "operation[abscomment]": "",
        "operation[person_id]": "13",
        "operation[Mission][id]":"1",
        "operation[Mission][operation_id]":"1199",
        "operation[Mission][subject]":null,
         "operation[Mission][id]":"2",
        "operation[Mission][operation_id]":"1123",
        "operation[Mission][subject]":"Second nested subject"

如何深入挖掘数据? 比方说,你有一个带有一些文本字段和一个网格(订单明细)的表单(订单),这是真实应用程序中众所周知的情况。 您有一个嵌套模型(Orders-> Order Details),并且您希望将网格与OrderDetails数据绑定...是否可能?