鉴于这样的商店,在运行时,storeId
将是App.store.Entities
而不是Entities
:
Ext.define('App.store.Entities', {
extend: 'Ext.data.Store',
storeId: 'Entites',
请注意,当Controller实例化存储时,storeId将被商店名称覆盖。
这不仅适用于控制器中需要商店
stores: ['App.store.Entities'],
但也是用
异步创建的this.getStore('App.store.Entities')
这是所有预期的行为,但我不喜欢这个事实,这种行为会强制使用
App.store.Entities
我遇到的问题是我的应用程序变得非常大,并且在一个store
文件夹中拥有所有store
个定义不再是一个选项。我想重构一个像下面这样的文件夹结构。
/app
/plugin1
/store
/Settings
/Details
/model
/view
/plugin2
/store
/Items
/Settings
/model
/view
如果我可以强制使用storeId
,我可以将其定义为'plugin1.Settings'
,并且可以提供比在该地方重复'App.plugin1.store.Settings'
更易读且更便携的代码。
我怎么可能解决这个问题?我可以从哪里开始?
答案 0 :(得分:1)
实际上,我不允许Ext实例化我的商店(仅在极少数情况下),因为这会阻止创建同一视图类的多个实例。我在视图中手动实例化商店' initComponent
覆盖。
这允许我无缝多个实例,如果我愿意,我可以选择storeId
- 我通常不会使用storeId,但我会从视图中获取商店。
但是,如果您只需要因文件夹组织而选择storeId,则可以使用较短的名称,例如subfolder1.StoreName1
等,但文件夹结构必须拆分在store
文件夹中。
app/store/subfolder1
app/store/subfolder2