我想对我使用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架构师的新手,但这在代码中是如此简单,对于正确的软件设计非常重要,因此我认为在架构师中一定有办法做到这一点。不幸的是,我不知道如何轻松地做到这一点。在深入研究之后,我在Sencha docs,http://docs.sencha.com/architect/2/#!/guide/classes中找到了这一点,它在标题"Custom“下声明如下:
虽然此处描述的特性允许从工具箱中的受支持项创建类,但有时您可能需要创建一个普通的无父类或扩展未出现在工具箱中的另一个类的类。您可以在架构师中使用工具箱中的类项来完成此操作。
好吧,听起来很有希望,- so,我试过了。在项目审查员中,我按了加号,去了“类”,而在那个“型号”里面。所以现在我在我的项目中有了一个定制的Model类。我称它为MyModel,并将“扩展”配置设置为MyApp.model.BaseModel。所以,至少现在代码是正确的,并且看起来像我上面的代码。然而,架构师似乎不知道MyModel类是一个模型,即使它位于我的项目检查器的“模型”部分,并且扩展了BaseModel。它没有我需要指定的任何模型配置属性(如“字段”),也不能将MyModel与任何类型的Store相关联。换句话说,架构师将MyModel视为一个完全自定义的类,不公开任何模型行为。这基本上使这种子类化的方式完全无用,- I可以子类为一个模型,但是我不能在项目中的任何地方使用它作为模型,那么有什么意义呢?
因此,问题是如何让架构师将MyModel作为一个实际的模型来对待?这不是架构师子类的正确方式吗?我刚刚开始我的项目,但我预见到经常需要子类,不管是模型、控制器、商店等等,如果我不能用架构师来实现这一点,这是一个严重的限制。
发布于 2013-08-04 01:09:45
你做的都是对的。建筑师在其目前的形式‘作品’这种方式,但有另一个,我认为将提供更好的结果。
尝试使用传统模型,并将createAlias与基本模型(又名xtype )上的userAlias集一起使用。
发布于 2013-10-23 06:00:09
我也经历过同样的问题,在使用架构师方面,这将是一个交易的破坏者。
我能够通过创建一个自定义类,扩展现有模型,然后在新类上创建自定义属性:“field”、"hasMany“、"proxy”等等。
您可以将属性设置为Array或Object类型,然后允许您编辑代码编辑器中的字段。
这不是一个完美的解决方案,因为架构师不承认类为模型,因此不能拖放字段等。
然而,输出的代码忠实于本机创建的模型。
希望这能帮上忙,本
https://stackoverflow.com/questions/18001922
复制相似问题