2012-02-17 7 views
0

サーバー側に2つのルートを使用してJSON文字列を作成したいとします。私はExtJS 3.2を使用しています。私はグリッドへのデータロードには最初のルートを使用し、もう1つは異なるデータでフォームを満たすことです。 私はこのようにサーバー側にJSON文字列を作成しています。複数のrooted JSON for ExtJSストアを作成するにはどうすればよいですか?

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

の第二ルート名前が概要と第二idPropertysummaryIDであると仮定しましょう。これを実装するにはどうすればいいですか?要約データをどこに追加できますか? Thx all。

+0

、 '{ "成功":真、 "ROOT1":[ \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]、 \t "root2":[ \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

答えて

4

do.iにはthis projectで同じ問題がありました。自動的にJSON response.putから複数のストアを作成する方法を理解しました。グリッドがロードされる前に次のコードがロードされています。extjs4、あなたのケースはMA.store.root1になりため

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); 
          } 
          ; 

作成した店舗:店舗が作成されますので、アプリは、initialized.The店舗が自動的に作成されますどのようなJSONリターンに依存しているとき、私はapp.jsに次のコードを入れてとMA.store.root2 MAはあなたのアプリの名前空間です(あなたはあなたのアプリの名前空間が何であれ変更してください)。このコードはextjs4のためのものです。古いバージョンで動作させるようにしてください。私たちが使用することができます

+0

は、あなたの答えをありがとうございました。私はこれを使うことができます。 – vtokmak

+0

15名の評判が必要なので投票できません:Sしかし、私はあなたの答えを受け入れました。 – vtokmak

+1

ありがとうございました。私はこの痛みの王を書くためにたくさんの苦痛を経験しました。それはGNU/GPlのライセンスを受けており、好きな場所で使うことができます。 –

関連する問題