【问题标题】:Aurelia computed properties with ES5Aurelia 使用 ES5 计算属性
【发布时间】:2015-11-08 19:13:48
【问题描述】:

我正在学习 Aurelia 教程,但我故意只使用 ES5 和 AMD/RequireJS,因为最初我试图减少可能需要在我当前的生产应用程序中引入的技术过载(目前正在使用 Angular,但我'正在考虑换成 Aurelia 而不是 Angular 2),但我一直坚持让计算属性工作。

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

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

我可以通过以下方式实现相同的效果,但考虑到正在实现的效果,它似乎非常冗长!有正确的 Aurelia 方式吗?

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

【问题讨论】:

    标签: javascript aurelia


    【解决方案1】:

    你所做的是正确的——你总是可以重新添加计算工厂方法,因为编写所有这些额外的 ES5 代码可能会变得乏味。

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

    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

    【讨论】:

    • 谢谢...这正是我希望听到的!是的,我完全同意你的观点,我应该为此创建自己的工厂(让我想知道为什么它被取出来了?!)谢谢你的帮助 :)
    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2022-01-05
    • 2020-01-25
    • 2017-09-17
    相关资源
    最近更新 更多