2015-02-10 120 views
1

是否可以從ViewController中檢索商店? 我試圖動態地使用商店中的按鈕填充工具欄,但我不確定如何從控制器訪問商店。 任何提示讚賞。 我的Extjs版本是5.1。在ViewController中獲取商店

查看:

Ext.define('EurocampingsCMS.view.Foo', { 
    extend: 'Ext.toolbar.Toolbar', 
    alias: 'widget.foo', 
    requires: [ 
     'EurocampingsCMS.controller.Foo' 
    ], 
    controller: 'foo', 
}); 

的ViewController:

Ext.define('MyApp.controller.Foo', { 
    extend: 'Ext.app.ViewController', 
    alias: 'controller.foo', 

    control: { 
     '#': { 
      beforerender: 'onBeforeRender' 
     } 
    }, 

    onBeforeRender: function (toolbar, eOpts) { 

     //How to get store here?? 

     store.each(function (record) { 
      toolbar.add({ 
       xtype: 'button', 
       itemId: record.get('localeId'), 
       text: record.get('label') 
      }); 
     }); 
    } 
}); 

回答

8

最好將充分利用的一種方式MVVM體系結構並在viewmodel stores對象中定義商店。那麼很容易:

onBeforeRender: function (toolbar, eOpts) { 
    var store = this.getViewModel().getStore('yourstorekey'); 
} 

注意:這隻有在商店的生命週期與視圖的生存期相同時纔有可能。如果您需要訪問一個全局存儲具有更長的壽命,然後爲它分配一個STOREID,並得到它:

var store = Ext.getStore('theStoreId'); 
+0

感謝您的明確答覆。我爲我們編寫的所有新代碼使用MVVM archictecture。我想要訪問全局存儲,因爲它包含了我在整個應用程序生命週期中必須訪問的所有可能的語言環境(語言),現在我使用getStore()方法來實現此目的。 – 2015-02-10 13:10:12

2

Ext.getStore( 'storeIdHere')是做

+0

感謝您的幫助 – 2015-02-10 13:10:47