如何在商店创建时限制点火呼叫

时间:2017-01-12 14:53:41

标签: extjs

我的商店在渲染功能中创建,一个调用被触发,但我的需求调用应该有条件地触发,但是商店实例应该始终创建。

对于这个要求,我在渲染函数中使用以下代码来创建存储,

Ext.create('mypage.store.customTreeGridStore', {
    storeId: 'myStore',
    proxy: {
        type: 'rest',
        startParam: undefined,
        filterParam: undefined,
        sortParam: undefined,
        paramsAsJson: true,
        limitParam: 'pageSize',
        pageParam: 'pageNo',
        restService: 'rest',
        restOperation: 'getOperation',
        url: me.urlparams,
        autoLoad: true,

        actionMethods: {
            read: 'POST'
        }
    }
});

我在商店添加了监听器

beforeload: function(store, operation, eOpts) {
    return booleanFlag; 
}

当页面加载时,我可以获得beforeLoad boolean flag false,而页面刷新调用没有被触发但Store实例创建成功, 但我有文本框,我正在搜索网格记录。当我在文本框中搜索任何文本时,我无法在网格中获取任何记录。

但是一旦booleanFlag为true,我就可以成功搜索结果。那么解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您的商店已将autoLoad设置为true,并且要强制商店不会一直自动加载,您可以使用beforeload事件来停止autoLoad。这个评估是否正确?

怎么样,而不是

Ext.create('mypage.store.customTreeGridStore', {
    proxy:{
        autoLoad: true,
    },
    listeners:{
        beforeload: function(store, operation, eOpts) {
            return booleanFlag; 
        }
    }
})

仅在需要时删除autoLoad并在创建后加载商店?

var store = Ext.create('mypage.store.customTreeGridStore', {
    proxy:{
        autoLoad: false,
    }
});
if(booleanFlag) store.load();