sencha架构商店配置作为对象

时间:2013-01-28 09:53:33

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

我正在尝试这样做:

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

但是得到:

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

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

如何解决?

P.S。我是在GUI中编辑配置属性。 Sencha Architect假设store是一个字符串,因此自动转义任何值。

2 个答案:

答案 0 :(得分:0)

存储配置采用商店对象或其名称,因此如果您想要传递对象,您可以在原地创建它,或者在初始化方法中,您可以这样做:

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

具有延迟存储关联/加载功能,您可以快速显示视图,而无需等待数据加载。

答案 1 :(得分:0)

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

Ext.define('MyApp.view.MyDataView', {
extend: 'Ext.dataview.DataView',

config: {
    store: ZAdmin.store.TreeFactory.create('ZAdmin.model.Category', 'Application\\Entity\\Category')
}
});

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