javascript - Aurelia 使用 ES5 计算属性

标签 javascript aurelia

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

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

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

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

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

最佳答案

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

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

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

关于javascript - Aurelia 使用 ES5 计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32028553/

相关文章:

javascript - 可拖动图表编辑 - 通过拖动编辑图表的值

javascript - CSS/JavaScript 表行/数据显示和隐藏不适用于我的数据表。?

webpack - 如何在 Visual Studio 项目中通过 Webpack 使用 Aurelia 中的监视/热重载?

javascript - 在我的 typescript 文件中正确引用 (javascript) jquery 插件

json - 部署 Aurelia/Node 应用程序时需要什么?

javascript - 如何将 $templateCache 注入(inject) Angular 混合 APP_INITIALIZER Hook ?

javascript - Array.filter 与 $filter ('filter' )

javascript - document.ready 中的函数将不起作用

aurelia - 如何将 Aurelia 项目从版本 v0.24.0 升级到当前版本 v1.2.3

选择列表上的 Aurelia 验证