Model view controller 在“更改”选项卡上加载Ext Js存储

Model view controller 在“更改”选项卡上加载Ext Js存储,model-view-controller,extjs,tabs,store,Model View Controller,Extjs,Tabs,Store,我正在尝试在更改选项卡(Ext.tab.Panel)时加载一个存储。每个选项卡都是不同的ViewModel,每个选项卡都有一个包装器,其中包含一个存储,该存储对所有具有筛选器的人都是全局的,如下所示: 页面显示方式的设计是: 1) 是视图模型,如果它引用了包装器,则它是Ext.form.FieldSet 2) 是商店所在地,也有参考,是Ext.panel.panel 使用此代码,我可以轻松获得商店,但只有在第二次在选项卡上输入时: var vm = this.getView().lookupR

我正在尝试在更改选项卡(Ext.tab.Panel)时加载一个存储。每个选项卡都是不同的ViewModel,每个选项卡都有一个包装器,其中包含一个存储,该存储对所有具有筛选器的人都是全局的,如下所示:

页面显示方式的设计是:

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’,
    }
} 

我的问题是,我第一次尝试渲染时,仅第二次无法获取存储区内的数据。

您可以尝试使用tabpanel或tab item的afterrender listener

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
        }); 
    }
}

您可以尝试使用tabpanel或tab项的afterrender侦听器

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
        }); 
    }
}

感谢Koshkin,我将立即尝试,并让您知道我能够调用active the选项卡,现在我的问题是,当我们第一次调用store时,它是空的,只有在第二次调用时,它才显示其上的所有数据。因此,您应该在activate listener和store.on('load')中使用store.load()在tab项的afterrender listener中。谢谢Koshkin,我将立即尝试,并让您知道我能够调用活动的tab,现在我的问题是,当我们第一次调用存储时,它是空的,只有在第二次调用时,它才显示其上的所有数据。因此,您应该在activate listener and store.on('load')中使用store.load()在选项卡项的afterrender侦听器中。