2015-12-08 93 views
7

我目前正在学习和使用Aurelia,并且发生了一些奇怪的事情(或许正常)。Aurelia绑定:重复调用属性getter

当使用以下代码

export class NavBar { 
    get username() { 
    console.log('o_o') 
    return 'name' + Date.now() 
    } 
} 

而在模板${username},用户名总是更新,几次每秒(和的console.log记录几次以及当然)。

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

谢谢!

回答

18

这是正常的,Aurelia调查你的财产的变化,因为它无法知道你的财产吸气剂何时会返回一个不同的值。

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

为了避免轮询你能告诉Aurelia路上的绑定系统来观察什么:

import {computedFrom} from 'aurelia-framework'; 

export class Foo { 
    _username = 'hello'; 

    @computedFrom('_username') 
    get username() { 
    return this._username; 
    } 
} 

另一种选择是使用一次性绑定:

${username & oneTime} 
+0

我忘记了一次性绑定,并不知道'computedFrom'。非常感谢您的解释! – Cohars