Aurelia使用ES5计算属性

时间:2015-08-15 19:34:43

标签: javascript aurelia

我正在通过Aurelia教程,但故意只使用ES5和AMD / RequireJS,因为最初我正在尝试减少技术过载,我可能需要在我当前的生产应用程序中引入(目前正在使用Angular但我想到交换到Aurelia而不是Angular 2,但我仍然坚持让计算属性工作。

我注意到update made in April从Object原型中删除了计算函数,它允许以下语法,但我不确定应该做什么而不是以下语法:

Welcome.computed({
    fullName : function() { return this.firstName + " " + this.lastName; }
});

我可以通过以下方式达到同样的效果,但考虑到实现目标,它似乎相当冗长!是否有正确的Aurelia方式?

Object.defineProperty(
  Welcome.prototype,
  "fullName",
  {
    get: function() { return this.firstName + " " + this.lastName },
    enumerable: true
  });

1 个答案:

答案 0 :(得分:3)

您正在做的事情是正确的 - 您可以随时重新添加计算出的工厂方法,因为编写所有这些额外的ES5代码可能会变得乏味。

我还建议指定计算属性的依赖关系以优化数据绑定效率。以下代码段是等效的:

ES5:

function fullName() { return this.firstName + ' ' + this.lastName }
fullName.dependencies = ['firstName', 'lastName'];
Object.defineProperty(
  Welcome.prototype,
  'fullName',
  {
    get: fullName,
    enumerable: true
  });

ES6 / ES7:

@computedFrom('firstName', 'lastName')
get fullName() {
  return `${this.firstName} ${this.lastName}`;
}

http://aurelia.io/docs.html#adaptive-binding