extjs - Store with autoload true should not load on application launch

后端 未结 3 1069
误落风尘
误落风尘 2021-02-15 16:54

I have a grid linked to a store with autoLoad: true. The problem is that the store gets loaded on application launch, even if the view is created only later when ac

3条回答
  •  灰色年华
    2021-02-15 17:34

    I would let the view's controller handle the store load.

    Start by disabling autoload on the store.

    Ext.define('Mb.controller.Winbiz', {
        extend: 'Ext.app.Controller',
        views: [
            'Owners'
        ],
        ownerStore: null,
        init: function(){
            this.control({
                'menu #test': {click: this.onMenuTest},
            });
    
            this.ownerStore = Ext.getStore('winbiz.Owners');
        },
        onMenuTest: function() {
            if (this.ownerStore.loaded === false) {
                this.ownerStore.load(
                    scope: this,
                    callback: this.onOwnerStoreLoaded
                );
            }
            else {
                this.addToTab();
            }            
        },
        onOwnerStoreLoaded: function (store, records, successful, eOpts) {
            if (successful) {
                store.loaded = true;
                this.addToTab();
            }
        },
        addToTab: function () {
            this.getController('Main').addToMainTab('test-gridPanel');
        }
    

    Wheter you want to change the view before or after the store is loaded is another question.

提交回复
热议问题