2012-01-27 7 views
0

マルチカードカードパネルを備えたカルーセルを作成するには、senchaを使用しています。各パネルには、ストアの独自のインスタンスにアタッチされるリストコンポーネントが含まれています。 すべてのリストストアインスタンスは、同じAPIを呼び出してデータをフェッチしますが、パラメータは異なります。バインドをリストして保存する...同じデータを抽出する

例: カード1は、mywebsite.com/api?node=1 カード2呼び出す1を保管するために添付のリスト1を持っていますmywebsite.com/api?node=2を呼び出す2を保管するために添付リスト2を持っています

カード1には、APIから取得された正しいノードセットが表示されます。しかし、カード2を見るためにスワイプすると、リスト1とリスト2の両方に全く同じデータが表示されますが、それぞれに独自のリストデータが必要です。

コード:

Test.data.NodeStore = Ext.extend(Ext.data.Store, { 
    constructor : function(config) { 
     config = Ext.apply({ 
      model: 'Test.models.Node', 
      autoLoad: false, 
      pageSize: 20, 
      proxy: { 
       type: 'scripttag', 
       url: Test.API.URL + '?action=getNodes', 
       extraParams: { 
       }, 
       reader: { 
        type: 'json' 
       } 
      }, 
      setSource: function(source) { 
       if(this.getProxy().extraParams.sourceID != source) { 
        this.getProxy().extraParams.sourceID = source; 
       } 
      } 
     }, config);     
     Test.data.NodeStore.superclass.constructor.call(this, config); 
    }, 

    onDestroy : function(config) { 
     Test.data.NodeStore.superclass.onDestroy.apply(this, arguments); 
    } 
}); 
Ext.reg('NodeStore', Test.data.NodeStore); 

リストビュー:

Test.views.ListView = Ext.extend(Ext.Panel, { 
    sourceID: 0, 
    layout: { 
     type: 'vbox', 
     align: 'stretch' 
    }, 
    items: [ 
     { 
      xtype: 'list', 
      itemTpl : new Ext.XTemplate("<div class='node'>{title}</div>"), 
      store: Ext.create(Test.data.NodeStore, {}), 
     } 
    ], 
    setSource: function(source) { 
     this.sourceID = source; 
     var store = this.items.get(0).getStore(); 

     store.setSource(source); 

     store.load(); 
    } 
}); 

動的リストビューを作成し、メインビュー

Test.views.Viewer = Ext.extend(Ext.Carousel, { 
    indicator: false, 
    layout: 'card', 
    style: { 
     padding: '0 20px' 
    }, 
    items: [ 

    ], 
    loadListView: function(listIndex) { 
     var currentRecord = Test.stores.ListStore.getAt(listIndex); 
     var newList = new Test.views.ListView(); 
     newList.setSource(currentRecord.get('ID')); 

     this.add(newList); 
     this.doLayout(); 

    }, 
    initComponent: function() { 
     Test.views.Viewer.superclass.initComponent.apply(this, arguments); 
     loadListView(1); 
     loadListView(2); 
    } 
}); 

これは、私はちょうど疑問に思って...本当に奇妙です、正確に同じ店、モデル、リストのコンポーネントを割り当てる煎茶です...どこに見えるかわからない

答えて

0

loadListView関数では、ストアのオブジェクトを作成し、既存のストアを変更するのではなく動的にリストに割り当てる必要がありました。

newList.items.get(0).store = Ext.create(Test.data.NodeStore, {});

関連する問題