我想在 ExtJS 应用程序中同时拥有具有不同商店的同一 View 的不同实例。目前,我在视口(viewport)中创建了同一 View (Ext.view.View)的多个实例。
但是,在每个 View 中都有不同的商店的最佳做法是什么?我发现的每个示例都在使用 Controller 的 stores-Config 创建的 View 中使用 Store-ID。但这会为每个 View 使用同一个商店。
目前我想出了以下可能的解决方案:
这些解决方案中的任何一个是最佳实践还是应该以不同的方式完成?
最佳答案
Controller 的stores数组的东西
也就是说,它将覆盖任何 storeId
定义。加载 store 类后, Controller 设置 storeId
根据命名空间约定,创建 store 并使用值作为 soreId
创建 getter 方法方法.
让我介绍选项 4
requires
数组)。 itemId
View 的(在创建 View 时设置它!)。 initComponent
创建 storeId
并在 StoreManager 中查找商店。如果不存在,则创建它并提供客户配置和 storeId
. 如果您每次都需要销毁 View 和商店,请查看 this post
演示初始化组件
initComponent: function() {
var me = this,
storeId = me.storeId + me.itemId;
me.store = Ext.StoreManager.lookup(storeId);
if(me.store === null)
me.store = Ext.create('App.data.CustomViewStore',Ext.apply({storeId: storeId},me.storeCfg || {}));
me.callParent(arguments);
}
注:如果您使用
views
加载 View 数组你最终会得到一个可能不会给你预期的 View 的 setter/getter 。您也可以在这里使用 Controller 的 requires 数组。如果您想使用 getter,只需使用 refs 创建自己的 getter配置。
关于extjs - 在 ExtJS 4 中多次使用相同 View 和存储的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333787/