2013-01-22 8 views
5

私のプロジェクトの1つでは、次のようにJSOnサーバーの応答でJsonストアをロードする必要があります。 JSonの応答では、私は2-3のルート要素を取得しています。ストア構成では、私は1つのルート要素しか提供できません。複数のルート要素を持つjsonストアをロードするには?

{ 
    {"level2List":[{id:'id1', name:'sample'},....]}, 
    {"level3List":[{id:'id1', name:'sample'},....]}, 
    {"level4List":[{id:'id1', name:'sample'},....]} 
} 

マイストアの設定は以下のとおりです。

store = new Ext.data.JsonStore({ 
// store configs 
storeId: 'myStore', 
proxy: { 
    type: 'ajax', 
    url: 'xml/getKpiInputData.json', 
    reader: { 
     type: 'json', 
     root: 'level3List', 
     idProperty: 'name' 
    } 
}, 
fields: [ 
     {name: 'name'}, 
     {name: 'id'}, 
     ... 
    ], 
remoteFilter: false, 
remoteSort: true, 
    pageSize: 10, 
autoLoad: {start: 0, limit: 10} 
}); 

私が1つのルート要素(例:level3List)を与えると、それぞれの項目が適切に読み込まれます。しかし、私は、複数のルート要素からデータをロードするソリューションが必要です。データを店舗に読み込むのを手伝ってください。

+0

これ。たぶん役に立つかもしれないhttp://www.sencha.com/forum/showthread.php?152899-Store-reading-multiple-roots – cclerville

+0

私がテストしたように、上記のEvanの答えはExt 3.4.0でも有効です。 – Roc

答えて

5

あなたは4.xを使用している場合は、ルートのパラメータは関数とすることができる:煎茶タッチフォーラムから

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

Ext.require('*'); 

Ext.onReady(function(){ 

    var store = new Ext.data.Store({ 
     model: MyModel, 
     proxy: { 
      type: 'memory', 
      reader: { 
       type: 'json', 
       root: function(o){ 
        var out = []; 
        return out.concat(o.root1, o.root2, o.root3); 
       } 
      } 
     }, 
     data: { 
      root1: [{ 
       name: 'Item 1' 
      }], 
      root2: [{ 
       name: 'Item 2' 
      }], 
      root3: [{ 
       name: 'Item 3' 
      }] 
     } 
    }); 

    store.load(); 
    console.log(store.getCount()); 
}); 
+0

ありがとうエヴァン、私の人生を救った私のために働いた:) – Sanjeeva

+1

あなたはどのように今店から根にアクセスしますか? – Ravi