use*_*338 5 extjs sencha-architect
我想继承我使用Sencha Architect创建的模型.假设我有一个名为BaseModel的模型,我已经创建了,我需要创建另一个模型,称之为MyModel,它扩展了BaseModel.在代码中,它看起来像这样:
// BaseModel.js
Ext.define('MyApp.model.BaseModel', {
extend: 'Ext.data.Model',
fields: [...]
});
Run Code Online (Sandbox Code Playgroud)
和
// MyModel.js
Ext.define('MyApp.model.MyModel', {
extend: 'MyApp.model.BaseModel',
fields: [...]
});
Run Code Online (Sandbox Code Playgroud)
我是ExtJS和Sencha Architect的新手,但这在代码中非常简单,对于正确的软件设计非常重要,我认为必须有一种方法可以在Architect中实现.不幸的是我无法弄清楚如何轻松地做到这一点.经过一番挖掘后,我在Sencha文档http://docs.sencha.com/architect/2/#!/guide/classes中找到了这个,它在"自定义类"标题下声明了以下内容:
虽然此处描述的功能允许从工具箱中受支持的项创建类,但有时您可能需要创建一个简单的无父类或一个扩展另一个类的类,该类不会出现在工具箱中.您可以使用"工具箱"中的"类"项在Architect中执行此操作.
好吧,听起来很有希望 - 所以我试过了.在项目检查员中,我点了加号,去了"Class",并在那个命中"模型"中.所以现在我的项目中有一个自定义的Model类.我打电话给它MyModel,我将"extend"配置为MyApp.model.BaseModel.所以现在至少代码是正确的,看起来就像我上面所说的那样.但是,Architect似乎不知道MyModel该类是一个模型,即使它位于我的Project Inspector的"Model"部分并进行了扩展BaseModel.它没有我需要指定的任何Model配置属性,如"fields",我无法MyModel与任何类型的Store 关联.换句话说,Architect将其MyModel视为完全自定义的类,并且不会暴露任何Model行为.这基本上使得这种子类化方式完全无用 - 我可以子类化一个模型但是我不能在项目的任何地方使用它作为模型,那么重点是什么?
所以问题是我如何让建筑师MyModel作为一个真正的模型来对待?这不是在Architect中进行子类化的正确方法吗?我刚刚开始我的项目,但我预计需要经常进行子类化,无论是模型,控制器,商店等,如果我不能与Architect这样做,那将是一个严重的限制.
你正在做所有正确的事情。当前形式的架构师以这种方式“工作”,但我认为还有另一种方式可以提供更好的结果。
尝试使用传统模型,并使用 createAlias 和在基本模型(又称为 xtype)上设置的 userAlias
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |