1

给定这样的商店,在运行时,storeIdApp.store.Entities代替Entities

Ext.define('App.store.Entities', {
    extend: 'Ext.data.Store',
    storeId: 'Entites',

文档指出:

请注意,当控制器实例化 store 时,storeId 将被 store 的名称覆盖。

这不仅适用于控制器中需要存储的情况

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'在原地重复更易读和更便携的代码。

我怎么可能解决这个问题?我可以从哪里开始?

4

1 回答 1

1

实际上,我不让 Ext 实例化我的商店(仅在极少数情况下),因为这会阻止创建同一视图类的多个实例。我在视图的initComponent覆盖中手动实例化存储。

这使我可以无缝地使用多个实例,而且我可以根据需要进行选择storeId- 我通常不使用 storeId 但我从视图中获取商店。

但是,如果因为文件夹组织只需要选择storeId,则可以使用较短的名称,例如subfolder1.StoreName1,等,但文件夹结构必须在store文件夹内进行拆分。

app/store/subfolder1 app/store/subfolder2

于 2014-06-02T11:35:50.593 回答