2011-10-04 91 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