如何检查商店的类型?

时间:2017-03-29 08:45:46

标签: javascript extjs extjs5 extjs6 extjs6-classic

在ExtJS框架中,我们可以定义不同类型的商店。如

Ext.data.BufforedStoreExt.data.ChainedStoreExt.data.Store

商店定义示例:

Ext.define('App.store.Admins', {
    extend: 'Ext.data.ChainedStore',
    ...
    constructor: function(cfg) {
        var me = this;   
        cfg = cfg || {};
        me.callParent([Ext.apply({
        ...
            alias: 'admins',    
            storeId: 'admins',
            source: 'users'
        ...
    }
})

Ext.grid.Panel类的视图配置中,我们必须设置网格/树绑定的数据源。

Ext.define('App.view.Grid',{
    extend: 'Ext.grid.Panel',
    ...
    id: 'admins-grid',
    store: 'admins',
    ...
});

在某个控制器上,我想获得有关此网格中定义的商店类型的信息。怎么做?

var grid = Ext.getCmp('admins-grid');
var store = grid.getStore();
//what's next?

我找到了解决方案,但这是最好的方法吗?

var isChained = store instanceof Ext.data.ChainedStore;

1 个答案:

答案 0 :(得分:0)

Instanceof是应该始终有效的简单javascript方式。

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/instanceof

如果商店有源配置且没有加载方法,则很可能是ChainedStore。

http://docs.sencha.com/extjs/6.0.1/classic/src/ChainedStore.js.html#Ext.data.ChainedStore

如果商店有配置缓冲和isBufferedStore,它将是一个缓冲存储。

http://docs.sencha.com/extjs/6.0.1/classic/src/BufferedStore.js.html#Ext.data.BufferedStore

根据您的使用情况,我将采用与此处描述的相同的方式,并将方法添加到扩展的chainedStore。