在更改标签

时间:2017-02-22 08:47:32

标签: model-view-controller extjs tabs store

我正在尝试在更改tabsPanels(Ext.tab.Panel)上加载商店,每个选项卡都是一个不同的ViewModel,并且每个选项卡都有一个包装器,其中包含一个全局的商店,每个商店都有一个过滤器,如这样:

方式的设计是显示页面:

enter image description here

1)是视图模型,它有对包装器的引用,它是一个Ext.form.FieldSet

2)商店是否定位,也有参考,这是一个Ext.panel.Panel

使用此代码,我设法轻松获得商店,但仅在我第二次进入选项卡时:

var vm = this.getView().lookupReference('commentwrapper').lookupReference('commentsList’).getViewModel();
console.log(vm);
console.log(vm.getStore('userTimeline')); 

当我更改标签时需要更新并过滤新数据时出现问题。我在每个ViewModel的控制器上使用此代码: PHP代码:

control: {
        '#': {
            activate: ‘functiontobe loaded’,
    }
} 

我的问题是我第一次尝试渲染我第二次无法获取商店内部的数据。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用tabpanel或标签项的后续监听器...

listeners: {
    afterrender: function(el) {
        // Now you can load any store you want
        el.getStore().load();
        // Or call some function after Tab will be activated
        el.on('activate', someFunction);
        // Or wait for store of any of your TabPanel Items will be loaded 
        el.getStore().on('load', function() {
           //some actions
        });
       // Also you can wait for any store load after your tab panel will be rendered
        Ext.getStore('App.store.Name').on('load', function(store) {
            // some actions on store load
        }); 
    }
}