【问题标题】:sencha architect store config as an objectsencha 架构师将配置存储为对象
【发布时间】:2013-01-28 09:53:32
【问题描述】:

我正在尝试这样做:

...
store: ZAdmin.store.TreeFactory.create('ZAdmin.model.Category', 'Application\\Entity\\Category')
...

但是得到:

...    
store: 'ZAdmin.store.TreeFactory.create(\'ZAdmin.model.Category\', \'Application\\Entity\\Category\')'
...

无法将存储从字符串类型更改为对象类型。

如何解决?

附:我要在 GUI 中编辑配置属性。 Sencha Architect 假设 store 是一个字符串,所以自动转义任何值。

【问题讨论】:

    标签: extjs extjs4 sencha-touch extjs4.1 sencha-architect


    【解决方案1】:

    store config 采用 store 对象或其名称,所以如果你想传递一个对象,你可以就地创建它,或者在初始化方法中你可以这样做:

    var myStore = ZAdmin.store.TreeFactory.create('ZAdmin.model.Category', 'Application\\Entity\\Category'); // Any kind of store creation
    this.setStore(myStore);
    myStore.load();   // Optional
    

    延迟存储关联/加载使您能够快速显示视图而无需等待数据加载。

    【讨论】:

    • 我是关于 Sencha Architect 的 GUI(见主题)。
    【解决方案2】:

    如果您希望在定义中保留初始化,那么最好为您的对象创建一个覆盖类。 IE。在代码编辑窗口的顶部按“创建覆盖”按钮,然后在 config 下输入您自己的初始化代码。例如。如果您想以这种方式设置数据视图对象的存储,则使用如下代码为数据视图创建覆盖:

    Ext.define('MyApp.view.MyDataView', {
    extend: 'Ext.dataview.DataView',
    
    config: {
        store: ZAdmin.store.TreeFactory.create('ZAdmin.model.Category', 'Application\\Entity\\Category')
    }
    });
    

    为了能够以这种方式覆盖您的控件,您需要先将其提升为类(右键单击控件 -> 提升为类 -> 为新创建的类创建覆盖)。

    【讨论】:

    • 谢谢。最后我决定为树和网格创建工厂,然后从视图工厂调用商店工厂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多