我想对我使用 Sencha Architect 创建的模型进行子类化。假设我已经创建了一个名为 BaseModel 的模型,我需要创建另一个模型,称为 MyModel,它扩展了 BaseModel。在代码中,它看起来像这样:
// BaseModel.js
Ext.define('MyApp.model.BaseModel', {
extend: 'Ext.data.Model',
fields: [...]
});
和
// MyModel.js
Ext.define('MyApp.model.MyModel', {
extend: 'MyApp.model.BaseModel',
fields: [...]
});
我是 ExtJS 和 Sencha Architect 的新手,但这是在代码中很容易做到的事情,对正确的软件设计非常重要,我想在 Architect 中必须有一种方法可以做到这一点。不幸的是,我无法弄清楚如何轻松做到这一点。经过一番挖掘,我在 Sencha 文档http://docs.sencha.com/architect/2/#!/guide/classes中找到了这个,它在“自定义类”标题下声明了以下内容:
虽然此处描述的功能允许从工具箱中支持的项目创建类,但有时您可能需要创建一个普通的无父类或扩展工具箱中未出现的另一个类的类。您可以在 Architect 中使用工具箱中的 Class 项来执行此操作。
好吧,听起来很有希望——所以我试了一下。在项目检查器中,我点击了加号,转到“类”,然后点击“模型”。所以现在我的项目中有一个自定义模型类。我调用它MyModel
并将“扩展”配置设置为MyApp.model.BaseModel
. 所以现在至少代码是正确的,看起来就像我上面的一样。然而,建筑师似乎不知道MyModel
该类是一个模型,即使它位于我的项目检查器的“模型”部分并扩展BaseModel
。它没有我需要指定的任何模型配置属性,例如“字段”,并且我无法MyModel
与任何类型的 Store 关联。换句话说,建筑师对待MyModel
作为一个完全自定义的类,并且不公开任何模型行为。这基本上使得这种子类化方式完全没用——我可以子类化一个模型,但是我不能在我的项目中的任何地方将它用作模型,那么有什么意义呢?
所以问题是我如何让 Architect 将MyModel
其视为实际模型?这不是在 Architect 中进行子类化的正确方法吗?我刚刚开始我的项目,但我预见到需要经常进行子类化,无论是模型、控制器、商店等,如果我不能用 Architect 做到这一点,那将是一个严重的限制。