2011-10-04 93 views
1

我想将json数据加载到表单中。Extjs格式:加载数据

的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]键,但不与操作[任务] [ID]。

在我的形式:

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

回答

3

对于操作[任务] [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 
    } 
} 
+0

好的,我改变了我的JSON结构,但它不工作= /我应该改变形式吗? –

+0

@kyrillos没有看到它很难知道。也许你可以发布完整的表单和新的JSON作为你原来的问题的一部分? – Hugh

+0

对不起,其实它工作的很好=)非常感谢你! –

0

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


理想的情况下你的模型对象和表单域的名称相匹配,然后你可以做loadRecord传递您的获取模型记录在表格上。但是,如果情况并非如此,并且您拥有从另一个Model读取的大量数据,或者只是一个Ajax请求,您仍然可以通过设置该字段的“value”属性来使用此数据设置表单字段。如果需要,您可以深入挖掘Model对象的data属性,如下所示:“myModel.data.subObject.someProperty”

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" 

如何挖掘数据。 比方说,您有一个带有一些文本框和一个网格(订单详细信息)的表单(订单),这是真实应用程序中的已知案例。 你有一个嵌套的模型(订单 - >订单详细信息),你想要绑定与OrderDetails网格数据的网格...有可能吗? 。

1

目前,您不能在表单字段定义:(才能使用的名称=“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属性名称有点奇怪,所以映射可能有点困难,所以最好使用convert函数。

+0

这真棒,json可以用这个映射“原样”使用。将初始json调整为“更符合”应该仅用作最后的手段,因为它不总是可能的。对我来说,这是最好的答案,而且我的谷歌大约1小时。竖起大拇指! – hypercube