Javascript 灰烬干燥模式可重复使用;余烬计算别名“;

Javascript 灰烬干燥模式可重复使用;余烬计算别名“;,javascript,ember.js,Javascript,Ember.js,我有一个表单可以在多个视图之间转换。目前,每个controller.js文件都有一长串的Ember.computed.alias。如何将其分解为一个文件并导入每个控制器 当前在每个controller.js中 entityEmail: Ember.computed.alias('controllers.checkout.entityEmail'), entityDOB: Ember.computed.alias('controllers.checkout.entityDOB'), entityP

我有一个表单可以在多个视图之间转换。目前,每个controller.js文件都有一长串的
Ember.computed.alias
。如何将其分解为一个文件并导入每个控制器

当前在每个controller.js中

entityEmail: Ember.computed.alias('controllers.checkout.entityEmail'),
entityDOB: Ember.computed.alias('controllers.checkout.entityDOB'),
entityPhone: Ember.computed.alias('controllers.checkout.entityPhone'),
entityAddress1: Ember.computed.alias('controllers.checkout.entityAddress1'),
entityAddress2: Ember.computed.alias('controllers.checkout.entityAddress2'),
entityCity: Ember.computed.alias('controllers.checkout.entityCity'),

我想把所有这些都放到一个文件中,这样我就可以简单地在每个控制器中导入一些1行程序。js这是的一个经典用例。
entityEmail: Ember.computed.alias('controllers.checkout.entityEmail'),
entityDOB: Ember.computed.alias('controllers.checkout.entityDOB'),
entityPhone: Ember.computed.alias('controllers.checkout.entityPhone'),
entityAddress1: Ember.computed.alias('controllers.checkout.entityAddress1'),
entityAddress2: Ember.computed.alias('controllers.checkout.entityAddress2'),
entityCity: Ember.computed.alias('controllers.checkout.entityCity'),
您可以将所有这些计算的道具提取到一个mixin中,并使用它扩展每个控制器(需要这些道具)

将以下mixin添加到您的应用程序中

//app/mixins/entity-form.js
从“余烬”导入余烬;
const{Mixin,inject,computed:{alias}}=Ember;
导出默认Mixin.create({
签出:inject.controller(),
entityEmail:alias('checkout.entityEmail'),
entityDOB:别名('checkout.entityDOB'),
entityPhone:别名('checkout.entityPhone'),
entityAddress1:别名('checkout.entityAddress1'),
entityAddress2:别名('checkout.entityAddress2'),
entityCity:别名('checkout.entityCity')
});
然后在控制器中使用它

//app/controllers/example.js
从“yourAppName/mixins/entity form”导入EntityFormMixin;
const{Controller}=Ember;
导出默认控制器.extend(EntityFormMixin{
//控制器的其他道具和功能
});
注:自年月日起提供。如果您使用的是旧版本,则需要将注入行替换为:
needs:['checkout']
,并在别名前面加上
“controllers.”
,就像您在示例中所做的那样