在ExtJS框架中我们可以定义不同类型的商店。比如
Ext.data.BufferedStore
、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
类的 View 配置中,我们必须设置网格/树绑定(bind)的数据源。
Ext.define('App.view.Grid',{
extend: 'Ext.grid.Panel',
...
id: 'admins-grid',
store: 'admins',
...
});
在某个 Controller 上,我想获取有关此网格中定义的商店类型的信息。怎么做?
var grid = Ext.getCmp('admins-grid');
var store = grid.getStore();
//what's next?
我找到了解决方案,但这是最好的方法吗?
var isChained = store instanceof Ext.data.ChainedStore;
最佳答案
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
<小时/>根据您的用例,我将采用 Thomas 在此描述的相同方式,并将方法添加到您的扩展 chainedStore 中。
关于javascript - 如何查看store是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43088595/