2014-03-07 36 views
2

4.2.0加載嵌套的JSON數據我有一個腳本,返回以下JSONExtJS的電網

{ 
    "success":true, 
    "code":0, 
    "message":"works", 
    "data":[ 
     { 
     "name":"connection1", 
     "status":1, 
     "info":[ 
      { 
       "info1":"abc", 
       "info2":"def", 
       "info3":"123" 
      }, 
      { 
       "info1":"ghi", 
       "info2":"jkl", 
       "info3":"456" 
      } 
     ] 
     }, 
     { 
     "name":"connection2", 
     "status":1, 
     "info":[ 
      { 
       "info1":"mno", 
       "info2":"pqr", 
       "info3":"789" 
      } 
     ] 
     }, 
     { 
     "name":"connection3", 
     "status":1, 
     "info":[ 
      { 
       "info1":"stu", 
       "info2":"vwx", 
       "info3":"123" 
      } 
     ] 
     }, 
     { 
     "name":"connection4", 
     "status":0, 
     "info":[ 

     ] 
     }, 
     { 
     "name":"connection5", 
     "status":0, 
     "info":[ 

     ] 
     } 
    ] 
} 

現在我想namestatusinfo's被加載到網格。 所以我首先定義了我的數據模型:

Ext.define("Data", { 
      extend: 'Ext.data.Model', 
      fields: ['name', 'status'] 
     }); 

然後我的信息模型:

Ext.define("Info", { 
      extend: 'Ext.data.Model', 
      fields: [ 
       'info1', 
       'info2', 
       'info3' 
      ], 
      belongsTo: 'Data' 
     }); 

,並設置我的商店:

var store = Ext.create('Ext.data.Store', { 
      model: "Data", 
      autoLoad: true, 
      proxy: { 
       type: 'ajax', 
       url: 'valid/URL.php' 
      }, 
      reader: { 
       type: 'json', 
       root: 'data' 
      } 

     }); 

但我console.debug(store)日誌data: items: Array[0]。 我試圖

hasMany: { model: 'Info', name: 'info' } 

添加到我的數據模型,但隨後我console.debug(store)日誌model: undefined

有誰知道我的錯誤在哪裏?任何幫助表示讚賞。

回答

2

這裏是一個fiddle展示工作代碼

的方法來執行,以獲得相應的hasMany商店info()store.data.items[0].info()

而且,在你的例子,讀者可以放置不當。它應該在代理定義中。我不確定複製/粘貼代碼時這是否只是一個錯誤。以下是相應的模型和存儲:

信息型號:

Ext.define("Info", { 
      extend: 'Ext.data.Model', 
      fields: ['info1', 'info2', 'info3'], 
      belongsTo:'Data' 
     }); 

數據模型:

Ext.define("Data", { 
      extend: 'Ext.data.Model', 
      fields: ['name', 'status'], 
      hasMany:{model:'Info',name:'info'} 
     }); 

商店:

var store = Ext.create('Ext.data.Store', { 
      model: "Data", 
      autoLoad: true, 
      proxy: { 
       type: 'ajax', 
       url: 'data1.json', 
       reader: { 
        type: 'json', 
        root: 'data' 
       } 
      } 
     }); 

加載後的演示日誌:

store.on('load', function() { 
      console.log(store.data.items[0].info()); 
     }) 
+0

嗨Weeksdev,感謝您的回答。 你能否看到下面的json結構並幫我加載相同的數據? { 「成功」:真, 「代碼」:0, 「消息」: 「作品」, 「數據」:[ { 「名稱」: 「連接1」, 「狀態」:1, 「INFO1」: 「一」, 「二」, 「三」, 「四有」 ], 「INFO2」: 「十」, 「二」, 「八」, 「四有」 ] }] } – Bhupi