Javascript Aurelia绑定:重复调用属性getter

Javascript Aurelia绑定:重复调用属性getter,javascript,aurelia,Javascript,Aurelia,我目前正在学习和使用Aurelia,一些奇怪的事情(可能是正常的)正在发生 当使用以下代码时 export class NavBar { get username() { console.log('o_o') return 'name' + Date.now() } } 在模板${username}中,用户名始终在更新,每秒更新几次(当然,console.log也会记录几次) 解决方法是简单地使用函数,而不是getter,并在模板中调用${username()}。但这种

我目前正在学习和使用Aurelia,一些奇怪的事情(可能是正常的)正在发生

当使用以下代码时

export class NavBar {
  get username() {
    console.log('o_o')
    return 'name' + Date.now()
  }
}
在模板
${username}
中,用户名始终在更新,每秒更新几次(当然,console.log也会记录几次)

解决方法是简单地使用函数,而不是getter,并在模板中调用
${username()}
。但这种行为正常吗?所以,我应该有时使用getter,有时不使用getter吗


谢谢

这很正常,Aurelia会轮询您的属性进行更改,因为它无法知道您的属性getter何时会返回不同的值

如果它是一个简单的属性(没有getter),Aurelia可以直接观察该属性,不需要轮询

为了避免轮询,您可以告诉Aurelia的绑定系统要观察什么:

从'aurelia framework'导入{computedFrom};
出口类食品{
_用户名='你好';
@计算自(“\u用户名”)
获取用户名(){
返回此。\u用户名;
}
}
另一种选择是使用一次性绑定:

${username&oneTime}

我忘记了一次性绑定,也不知道从
计算的
。非常感谢你的解释!