Extjs表单:加载数据

Extjs表单:加载数据,extjs,extjs4,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",

我想将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'
},

为了使操作[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
    }
}

为了使操作[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
    }
}

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



理想情况下,您的模型对象和表单字段的名称匹配,然后您就可以在传递所获取的模型记录的表单上执行loadRecord。然而,如果情况并非如此,并且您有从另一个模型读取的数据块,或者只是一个Ajax请求,那么您仍然可以通过设置字段的“value”属性来使用该数据设置表单字段。如果需要,您可以像这样深入研究模型对象的数据属性:“myModel.data.subObject.someProperty”

或者,您可以使用从其他地方加载的对象的数据设置字段的值



理想情况下,您的模型对象和表单字段的名称匹配,然后您就可以在传递所获取的模型记录的表单上执行loadRecord。然而,如果情况并非如此,并且您有从另一个模型读取的数据块,或者只是一个Ajax请求,那么您仍然可以通过设置字段的“value”属性来使用该数据设置表单字段。如果需要,您可以像这样深入研究模型对象的数据属性:“myModel.data.subObject.someProperty”

如果是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网络数据绑定网格……可能吗?

如果是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网络数据绑定网格……可能吗?

当前您不能在表单字段定义中使用name='property.subperty:(

因此,为了实现这一点,我将逻辑-添加(冗余)字段定义还原为模型:

Ext.define('operation', {
  extend: 'Ext.data.Model',
  fields: [
    'id',
    'startDate',
    'endDate',
    ...
    {name: 'missionId', mapping: 'mission.id'}
  ]
});
然后可以创建一个表单字段,如:

{
  xtype: 'displayfield',
  name: 'missionId',
  ...
}
并且它将填充在form.loadRecord()上


在您的例子中,JSON属性名称有点奇怪,因此映射可能有点困难,因此最好使用转换函数。

目前,您不能在表单字段定义中使用name='property.subperty:(

因此,为了实现这一点,我将逻辑-添加(冗余)字段定义还原为模型:

Ext.define('operation', {
  extend: 'Ext.data.Model',
  fields: [
    'id',
    'startDate',
    'endDate',
    ...
    {name: 'missionId', mapping: 'mission.id'}
  ]
});
然后可以创建一个表单字段,如:

{
  xtype: 'displayfield',
  name: 'missionId',
  ...
}
并且它将填充在form.loadRecord()上


在您的例子中,JSON属性名称有点奇怪,因此映射可能有点困难,因此最好使用转换函数。

好的,我更改了JSON结构,但它不起作用=/我是否也应该更改表单?@kyrillos不看就很难知道。也许您可以将完整表单和新JSON作为原始表单的一部分发布stion?对不起,实际上它工作得很好=)非常感谢!!@kyrillos没问题。另外,如果你在Sencha论坛附近有一个搜索,Animal发布了一些关于尝试将嵌套JSON结构加载到表单中的帖子。好的,我更改了我的JSON结构,但它不起作用=/我应该也更改表单吗?@kyrillos不看到它很难知道。也许你可以发布fu我将表单和新的JSON作为原始问题的一部分?对不起,实际上它工作得很好=),非常感谢@基里洛斯:没问题。另外,如果你在Sencha论坛附近有一个搜索,Animal会发布一些关于尝试将嵌套JSON结构加载到表单中的帖子。将初始json调整为“更兼容”只能作为最后手段,因为这并不总是可能的。对我来说,这是最好的答案,也正是我用谷歌搜索了大约1小时的结果。竖起大拇指!这太棒了,json可以“按原样”与此映射一起使用。将初始json调整为“更兼容”只能作为最后手段,因为这并不总是可能的。对我来说,这是最好的答案,也正是我用谷歌搜索了大约1小时的结果。竖起大拇指!