2012-01-21 77 views
1

我有一個簡單的測試應用程序,我有一個輪播將實例化多個相同類型的網格,每個網格都有自己的商店副本。ST2:使用商店和MVC的2個唯一實例

傳送帶:

Ext.define('App.view.TopPageCarousel', { 
extend: 'Ext.Carousel', 
xtype : 'app-toppagecarousel', 
requires: ['Ext.Carousel', 'App.view.TopPageGrid'], 
config: { 
    title: 'Top Pages', 
    items: [{ 
     xtype : 'app-toppagegrid', 
     title : 'titleA' 
    },{ 
     xtype : 'app-toppagegrid', 
     title : 'titleB' 
    }] 
} 

});

起初,我在網格中將商店定義爲其配置中的一個屬性,並且我有控制器監聽商店更改,只是讓我知道它正在加載。 ajax調用已經完成並且網格已經填充。但是,即使每次調用都返回唯一數據,所有網格都會填充相同的數據。

然後我找到了一個職位,說我需要實例化店爲正在填充網格,像這樣:

constructor : function() { 
    var me = this; 
    Ext.apply(me, { 
     store : me.buildStore() 
    }); 
    me.callParent(arguments); 
    me.store.load({params : {ufq : this.title}}); 
}, 
buildStore : function() { 
    return Ext.create('App.store.Links'); 
} 

這類作品。 ajax調用正在進行,但網格現在沒有被填充,我沒有看到console.log(「Store loaded」);正在執行,我放在控制器中。我究竟做錯了什麼?

回答

0

原來在ST2而不是使用Ext.create,做的最好的事情是(在我的特定情況下,不爲標準):

constructor : function() { 
    this.callParent(arguments); 
    Ext.setStore('App.store.Links'); 
}, 

使用Ext.getStore & Ext.setStore是現在如果你想要很多的好處,隨着事件&商店經理。