【问题标题】:ExtJS 4 - How to access multiple stores from views in MVC?ExtJS 4 - 如何从 MVC 中的视图访问多个商店?
【发布时间】:2011-05-13 13:59:31
【问题描述】:

我正在尝试使用新的 MVC 方法方法在 extjs 4 中构建应用程序。 我有一个网格,用户可以在其中连续click 并完成编辑Ext.window.

这个带有标签的Ext.window 在控制器中被定义为一个视图。我在两件事上遇到了问题:


1) 该窗口有 2 个网格,我希望在单击选项卡时从商店填充这些网格。在定义网格的存储时,即使它在我的控制器中被拒绝,我也无法访问它。我试过了

...
xtype:'grid',
store:MyApp.store.Products
columns:[..]
...

但没有运气!

还尝试为视图定义多个商店:

Ext.define('MyApp.view.Edit', {
    extend:'Ext.window.Window',
    store:['Products','Countries']
...

但也没有运气。如果我在视图中只定义了一个商店,我可以使用this.Countries 来访问它。


2) 我的第二个问题部分相关。 The Ext.window 是一个表单,其中填充了来自单击的网格行的数据。

如何使用推送到其中的数据填充 Ext.window 表单中的一个网格?默认情况下它是否应该有一个空存储,然后在tabclick 上有一个侦听器?或者我可以将一个数据对象推入其中吗?

感谢任何帮助。

【问题讨论】:

    标签: model-view-controller grid extjs4


    【解决方案1】:

    要回答您的第一个问题,您需要在控制器中引用您的商店。你可以在你的控制器中做这样的事情

    stores  : ['Products', 'Countries'],
    
    models  : ['Products', 'Countries'],
    
    refs: [
        {ref: 'mytabpanel', selector: 'mytabs'}
    ],
    
     init: function() {
        this.control({
            'mytabs': {
                tabchange       : this.loadTabData
            },
    
         //create a onProductsStoreLoad method to handle stuff
         this.getProductsStore().on({
            scope: this,
            load : this.onProductsStoreLoad
        });
    
    
    loadTabData: function() {
       var activeTab = this.getMytabpanel().getActiveTab();
       //Do whatever you need
    }
    

    【讨论】:

    • 谢谢。逻辑部分确实需要去控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2023-03-31
    • 2012-01-11
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多