如何使用ES6在Ember中声明可观察性或计算属性
How to declare observables or computed properties in Ember using ES6?
尝试将ES6用于我所有的Ember工作。我有以下ES6语法问题:
如何将标准的ES5对象文字计算属性转换为ES6语法?
ES5:
export default Ember.Controller.extend({
foo: function() {
return "bar";
}.property()
});
ES6:
export default Ember.Controller.extend({
foo() {
return "bar"
}.property()
});
到目前为止,我所掌握的似乎不起作用,因为没有正确引用.properties。这是如何实现的?
ES6仅在类内部支持该语法。我不确定Ember是否以标准JavaScript的方式公开了它的类系统。
我强烈建议不要使用原型扩展。也就是说,你总是这样做:
foo: Ember.computed('bar', function() {
return this.get('bar');
})
它对我来说读起来好多了。
以下内容似乎适用于Ember 1.13:
export default class extends Ember.Controller {
constructor(...args) {
super(...args);
this.foo = Ember.computed('bar', function() {
return this.get('bar');
});
}
}
请注意"导出默认类"以及在构造函数中定义函数的稍微令人讨厌的方面。
您也可以拆分函数定义:
export default class extends Ember.Controller {
constructor(...args) {
super(...args);
this.foo = Ember.computed('bar', this.foo);
}
foo() {
return this.get('bar');
}
}
但是,你有一个缺点,那就是将函数的计算性质与函数本身分开。
如果人们有其他想法的话,我很想听听,因为我更喜欢定义类的ES6风格。
使用新的getter语法:
foo: Ember.computed('bar', {
get() {
return this.get('bar');
}
})
相关文章:
- 如何收集Knockout可观察性以放入JSON
- 下拉列表未从计算的可观察项更新
- 在编辑记录上可观察的挖空 JS 计算
- 在隐藏值上调用 jQuery .trigger('change') 会破坏与 KNOCKOUT 相关的可观察性
- Knockout.js性能-有多少可观察性
- 挖空映射:加载数据后,父模型中的计算可观察量不会更新
- 更改可观察数组会更改自定义绑定处理程序knockoutjs的可见性
- Knockout.js:在可选定义的值上计算可观察性
- 如何使用ES6在Ember中声明可观察性或计算属性
- 击倒计算的可观察到的未发射'写'
- 向KO传递在对象内可观察到的计算值
- RXJS5 - 按每个对象包含的可观察性过滤对象数组
- Angular2 Http 请求返回没有映射方法的可观察性
- 在数据绑定表达式中,何时使用或不使用带可观察性的括号
- 在knockoutjs中计算的可观察性;更改时不更新
- 如何增加knockout.js的可观察性
- 如何通过多个$.ajax调用实现异步计算可观察性
- 敲除绑定顺序/不带可观察性
- knockoutjs:计算级联数组(复杂视图模型)中的可观察性和this指针
- 使用计算的可观察性的对象范围