首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ES6在Ember中声明可观测值或计算属性?

如何使用ES6在Ember中声明可观测值或计算属性?
EN

Stack Overflow用户
提问于 2015-02-08 18:50:06
回答 3查看 992关注 0票数 1

试着在我所有的Ember作品中使用ES6。我有以下ES6语法问题:

如何将标准的ES5对象文字计算属性转换为ES6语法?

ES5:

代码语言:javascript
复制
 export default Ember.Controller.extend({
     foo: function() {
         return "bar";
     }.property()
    });

ES6:

代码语言:javascript
复制
export default Ember.Controller.extend({
  foo() {
    return "bar"
}.property()
});

到目前为止,由于没有正确引用.property,所以我所拥有的内容似乎不起作用。这是如何实现的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-27 18:03:12

ES6只在类内部支持这种语法。我不确定Ember是否以与标准JavaScript一起工作的方式公开了它的类系统。

我强烈建议不要使用原型扩展。也就是说,你总是这样做:

代码语言:javascript
复制
foo: Ember.computed('bar', function() {
  return this.get('bar');
})

对我来说读起来好多了。

票数 4
EN

Stack Overflow用户

发布于 2015-06-23 22:52:39

以下内容似乎适用于Ember 1.13:

代码语言:javascript
复制
export default class extends Ember.Controller {
  constructor(...args) {
    super(...args);

    this.foo = Ember.computed('bar', function() {
      return this.get('bar');
    });
  }
}

请注意“导出默认类”和在构造函数中定义函数的稍微恼人的方面。

您还可以拆分函数定义:

代码语言:javascript
复制
export default class extends Ember.Controller {
  constructor(...args) {
    super(...args);

    this.foo = Ember.computed('bar', this.foo);
  }

  foo() {
    return this.get('bar');
  }
}

但是,还有一个缺点,就是将函数的计算性质与函数本身分开。

如果人们有其他的想法,我很喜欢定义类的ES6风格,我很想听听它们。

票数 2
EN

Stack Overflow用户

发布于 2015-07-17 01:06:49

使用新的getter语法:

代码语言:javascript
复制
foo: Ember.computed('bar', {
  get() {
    return this.get('bar');
  }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28397953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档