gpt4 book ai didi

extjs - 具有相同存储 Ext JS 的网格的问题

转载 作者:行者123 更新时间:2023-12-04 22:32:19 28 4
gpt4 key购买 nike

所以我有包含 panelfooPanel (让我们称之为 grid )(让我们调用 if fooGrid ,它有一些 store )。 fooPanel 可以插入到一些 tabpanel 中。所以问题是, tabpanel 可能包含两个(或更多) fooPanel 的实例,以及一些不同的参数。我认为问题在这里很明显。由于面板中的 fooGrids 具有相同的 stores ,所以只要我重新加载一个商店,就会重新加载两个 fooGrids 。 (因为它们具有相同的 stores )。有针对这个的解决方法吗?或者我应该限制用户只打开每个 fooPanel 的一个 tabpanel 实例

最佳答案

除了为每个网格创建一个商店之外,没有简单的解决方案。如果您不想创建商店的多个实例的原因是为了避免多次加载,您可以在代理级别破解某种缓存。

编辑 如何为您的网格创建多个存储的示例

您可以在网格的 Ext.create('My.Store') 方法中自己创建商店实例(即使用 initComponent ):

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

关于extjs - 具有相同存储 Ext JS 的网格的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17880786/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com