2012-02-17 43 views
0

我想用2根在服務器端創建一個JSON字符串。我正在使用ExtJS 3.2。我想使用第一個根加載數據到網格,第二個是用不同的數據填充表單。 我在服務器端創建JSON字符串像這樣;如何爲ExtJS商店創建多個紮根JSON?

{ 
    metaData: { 
     "idProperty": "reportID", 
     "root": "data", 
     "successProperty": "success" 
    }, 
    "success": true, 
    "data": [ 
    { 
     "ID": 1, 
     "name": "Jon", 
     "surname": "Doe" 
    }] 
} 

假設第二名字是摘要和第二idPropertysummaryID。我如何實現這一點,我可以在哪裏添加彙總數據? Thx全部。

+0

我們可以使用, '{ 「成功」:真實, 中 「root1」: \t \t { \t \t 「ID」:1, \t \t 「名」: 「喬恩」, \t \t 「姓」: 「Doe的」 \t \t}, \t \t \t { \t \t 「ID」:2, \t \t 「名稱」: 「Jane」,請 \t \t 「姓」: 「Doe的」 \t \t} \t \t], \t 「根-2」:[ \t \t { \t \t 「ID」:1, \t \t 「名」: 「傑克」, \t \t 「姓」: 「布朗」 \t \t}, \t \t \t { \t \t 「ID」:2, \t \t 「名」: 「克里斯」, \t \t 「姓」: 「布朗」 \t \t} \t \t] }' – vtokmak 2012-02-17 22:54:03

回答

4

沒有automagic,你願意do.i在this project上有同樣的問題,我想出瞭如何從JSON響應中自動創建多個商店。在你的網格被加載之前輸入以下代碼。在extjs4中,我把下面的代碼在app.js這樣的商店將被創建時,應用程序是initialized.The商店將被自動創建,依賴於什麼JSON回報:

Ext.Ajax 
        .request({ 
         url : './account/getadminstores', 
         callback : function(options, success, response) { 
          var json = Ext.decode(response.responseText); 
          var adminStores = new Array(); 
          // setup and intitialize on the fly stores 
          for (var key1 in json) { 
           var storeFields = new Array(); 
           for (var key2 in json[key1]) {// if 
            // (i==1){break;} 
            // console.log(key2); 
            for (var key3 in json[key1][key2]) { 
             storeFields.push(key3); 
            } 
            break; 
           } 
           ; 
           Ext.define('MA.store.' + key1, { 
            extend : 'Ext.data.Store', 
            fields : storeFields, 
            storeId : key1, 
            id : 'MA.store.' + key1, 
            data : json[key1], 
           proxy: { 
            type: 'ajax', 
            url : './account/getadminstores', 
            reader: { 
             type: 'json', 
             root: key1 
            } 
           }, 
           autoLoad: true 
           }); 
           Ext.create('MA.store.' + key1); 
          } 
          ; 

創建存儲你的情況是MA.store.root1MA.store.root2其中MA是你的應用程序名稱空間(並且你應該將其更改爲你的應用程序名稱空間)。此代碼用於extjs4,並且您可能需要對其進行一些修改使它在舊版本中工作。希望它有幫助。

+0

感謝您的回答。我可以使用這個,thx很多。 – vtokmak 2012-02-20 08:32:12

+0

我不能投票,因爲它想要15個聲望:但我接受了你的答案。 – vtokmak 2012-02-22 09:27:11

+1

謝謝。我經歷了很多痛苦,才寫下了這位痛苦之王。在GNU/GPl許可的情況下,您可以隨時隨地使用它。 – 2012-02-22 12:04:15