与同一商店的网格存在问题Ext JS
所以我有panel
(让我们称之为fooPanel
)包含一个grid
(让我们打电话,如果fooGrid
,它有一些store
)。 fooPanel
可以插入一些tabpanel
。 所以事情是,它是可能的tabpanel
牵制的两个(或更多)实例fooPanel
,有一些不同的参数。 我认为这个问题很明显。 因为使用面板的fooGrids
具有相同的stores
,只要我重新加载一个存储区,两个fooGrids
都将被重新加载。 (因为他们有相同的stores
)。 有针对这个的解决方法吗? 或者我应该限制用户每个tabpanel
打开一个fooPanel
实例
除了每个网格创建一个商店之外没有简单的解 如果您不想创建商店的多个实例的原因是为了避免多次加载,您可以在代理级别上进行某种缓存。
编辑如何为网格创建多个商店的示例
你可以在你的grid的initComponent
方法中创建商店实例(例如使用Ext.create('My.Store')
):
Ext.define('My.Store', {
extend: 'Ext.data.Store'
,fields: ['name']
,proxy: {
type: 'memory'
,reader: 'array'
}
,data: [['Foo'],['Bar'],['Baz']]
});
Ext.define('My.Grid', {
extend: 'Ext.grid.Panel'
,columns: [{dataIndex: 'name'}]
,initComponent: function() {
// /! Do that BEFORE calling parent method
if (!this.store) {
this.store = Ext.create('My.Store');
}
// ... but don't forget to call parent method
this.callParent(arguments);
}
});
// Then I can create multiple grids, they will have their own store instances
Ext.create('My.Grid', {
renderTo: Ext.getBody()
,height: 200
});
Ext.create('My.Grid', {
renderTo: Ext.getBody()
,height: 200
});
或者您可以在创建时指定新的商店实例:
Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody()
,height: 200
,columns: [{dataIndex: 'name'}]
,store: Ext.create('My.Store') // one instance
});
Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody()
,height: 200
,columns: [{dataIndex: 'name'}]
,store: Ext.create('My.Store') // two instances!
});
但是,就我而言,我通常不打算创建完整的商店定义。 我在模型中配置代理,并使用该模型使用内联存储配置(内联配置将转换为它们自己的实例,在Ext4中)。 例:
Ext.define('My.Grid', {
extend: 'Ext.grid.Panel'
,columns: [{dataIndex: 'name'}]
// inline store configuration
,store: {
// The model takes care of the fields & proxy definition
model: 'My.Model'
// other params (like remoteSort, etc.)
}
});
// Now I can create plenty of My.Grid again, that won't interfere with each other
这篇文章可能会帮助你
Ext.define('App.store.MyStore', {
extend : 'Ext.data.Store',
alias : 'store.app-mystore', // create store alias
// ...
});
Ext.define('App.view.MyCombo', {
extend : 'Ext.form.field.ComboBox',
xtype : 'app-mycombo',
requires : [
'App.store.myStore'
],
// combo config
store : {
type : 'app-mystore' // store alias; type creates new instance
}
});
http://www.sencha.com/forum/showthread.php?284388-ExtJs-4.2-Multiple-instances-of-the-same-Store&p=1040251
在ExtJS 5中,您可以利用链式商店。 这样,您可以拥有一个源存储,而其他商店则使用不同的过滤器查看同一商店。
http://docs.sencha.com/extjs/5.0.0/whats_new/5.0/whats_new.html
http://extjs.eu/on-chained-stores/
链接地址: http://www.djcxy.com/p/27189.html