【问题标题】:How to reference in Extjs in a view one of two stores with the same name?如何在 Extjs 中在两个同名商店之一的视图中引用?
【发布时间】:2013-06-17 00:43:03
【问题描述】:

我有两家商店:

Files@APP.store.aaa

Files@APP.store.bbb

还有两个视图

列表@APP.view.bbb

List@APP.view.aaa

我想在每个文件中引用不同的文件存储。如果我只在视图存储属性中放置“文件”

存储:“文件”

然后我在这两种情况下都得到相同的商店。 放置“Files@APP.store.bbb”不起作用。

我应该如何引用它们以在第二个视图中获得正确的存储?

谢谢!

【问题讨论】:

    标签: extjs extjs4 store extjs4.2


    【解决方案1】:

    这是因为 ExtJS MVC 约定将执行以下操作:

    通过“@”拆分 FQN 并将第一部分用作 storeId,这将覆盖任何预定义的 storeId。 MVC 期望每个 store 都是单例的,如果您以这种方式使用 @ 语法,则不会占用任何额外的命名空间。

    尝试像这样注册商店(视图/模型)

    stores:['aaa.Files','bbb.Files']
    

    ExtJS 现在将负责命名空间,但您需要使用它!

    所以现在 storeId 是:'aaa.Files' 和 'bbb.Files' 其中。

    【讨论】:

    • 不幸的是它不起作用。也许我错过了更多的东西?我得到“未捕获的类型错误:无法读取未定义的 ext-all.js:21 的属性‘缓冲’”
    • @szym 出现此错误是因为网格(或任何类似的)配置了无效存储...您是否将 store: 'Files' 更改为 store: 'aaa.Files'store: 'bbb.Files'
    • 我尝试了几种不同的组合,似乎没有任何效果。现在我在控制器中有stores: ['aaa.Files'],,在视图中有store: ['aaa.Files'],。而控制台中的这个错误 Uncaught TypeError: Cannot call method 'on' of undefined ext-all.js:21
    • @szym 出现错误:stores 应该是一个数组 store 需要是存储配置、存储实例或 storeId。您始终可以通过在控制台中输入 Ext.StoreMgr.lookup('aaa.Files') 来测试商店实例是否存在,此处的参数是 storeId。
    猜你喜欢
    • 1970-01-01
    • 2013-02-05
    • 2012-02-25
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多