Ember DRY模式用于重用“Ember.computed.alias”
Ember DRY pattern for reusing "Ember.computed.alias"
我有一个表单,它在多个视图之间转换。目前,每个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'),
我想把所有这些都放到一个文件中这样我就可以在每个controller。js中导入一些1的行符
这是Ember.Mixin的经典用例。
你可以将所有这些计算出来的道具提取到一个mixin中,并扩展每个需要这些道具的控制器。
将下面的mixin添加到你的应用
// app/mixins/entity-form.js
import Ember from 'ember';
const { Mixin, inject, computed: { alias } } = Ember;
export default Mixin.create({
checkout: inject.controller(),
entityEmail: alias('checkout.entityEmail'),
entityDOB: alias('checkout.entityDOB'),
entityPhone: alias('checkout.entityPhone'),
entityAddress1: alias('checkout.entityAddress1'),
entityAddress2: alias('checkout.entityAddress2'),
entityCity: alias('checkout.entityCity')
});
然后在控制器中使用
// app/controllers/example.js
import EntityFormMixin from 'yourAppName/mixins/entity-form';
const { Controller } = Ember;
export default Controller.extend(EntityFormMixin, {
// rest of controller's props and functions
});
注意:安博。inject API从Ember 1.10.0开始可用。如果您使用的是旧版本,则需要将注入行替换为:needs: ['checkout']
,并像在示例中那样使用"controllers."
作为别名的前缀。
相关文章:
- 强制模板刷新ember.js
- Ember Data DS.Model's set函数不起作用
- Ember.js-接口状态应该存储在哪里
- 在ember/handlers中使用value和valueBinding有什么区别
- 当在Ember中点击一个项目时,我如何将一个活动类添加到项目列表中
- Uncaught TypeError:undefined不是函数-ember js
- 有没有一种方法可以列出Ember.Object的所有绑定
- 将ember对象的数组从ember组件传递到模板
- 尝试JSON.stringify Ember模型时Id丢失
- 手动触发ember.js中的属性更改
- 如何在ember单元测试中模拟_super()方法
- Ember.js(2.5.0)如何设置嵌套对象值
- 使用Ember-cli项目中的ES6库
- I'我得到这个.get()在ember中未定义
- 如何使用ember.js在操作中传递当前上下文中目标旁边的信息
- Ember车把助手中的Newline
- 有人能提供一张ember数据与broswer's的持久层
- Ember Computed属性和Handlebars模板
- Ember.js:如何使用computed property作为路由
- Ember DRY模式用于重用“Ember.computed.alias”