重用或创建新商店 - ExtJS 4

时间:2014-06-26 12:53:43

标签: extjs extjs4 extjs4.2

我的应用程序中有几个商店。在我加载应该调用store.load()函数的网格之前,不会创建它们。因此,某些组件可能需要仍未创建的商店。我正在使用此功能来解决此问题:

getOrCreateStore: function(storeId, className){
    return (Ext.getStore(storeId) == undefined) ? Ext.create(className) : Ext.getStore(storeId);
},

因此,每次组件都需要特定的商店时,我会在创建时调用,如果它不存在则创建它。

创建商店是否有更好的方法,以便我不必手动操作?我在ExtJS 4应用程序中设置了一些关于创建商店的配置吗?

为什么我使用上述修复,如果实际上没有先创建商店,则网格保持为空。

1 个答案:

答案 0 :(得分:2)

请参阅http://docs-origin.sencha.com/extjs/4.2.2/#!/api/Ext.data.StoreManager

  • 创建商店时,您没有给商店storeId
  • 您的三元也可以压缩为||操作。

<强>代码

getOrCreateStore: function(storeId, className){
    return Ext.getStore(storeId) || Ext.create(className, {storeId: storeId});
}

旁注: 我认为大多数Ext的经理都是不好的做法。它们只不过是美化的全球变量。我更喜欢绕过他们需要的商店,而不是将它们添加到全球状态。但是,我确实理解这使得编程在某些情况下更容易,并且如果你想要这种延迟加载的商店(我不确定这对你真的有什么好处),这就是你要走的路。我只是警告你,它往往会使维护和单元测试更加困难。