在ExtJS框架中,我们可以定义不同类型的商店。如
Ext.data.BufforedStore
,Ext.data.ChainedStore
,Ext.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;
答案 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。