2015-12-08 28 views
7

私は現在、Aureliaを学習していて、なんらかの種類の奇妙な(おそらく正常な)状況が起こっています。次のコードAureliaバインディング:プロパティゲッターが繰り返し呼び出される

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

、テンプレート${username}内を使用する場合、ユーザー名は常に更新され、秒あたり数回(とはconsole.logはもちろん、同様に数回記録されます)

回避策は、単にゲッターではなく関数を使用して、${username()}をテンプレートに呼び出すことです。しかし、この動作は正常ですか?だから時々ゲッターを使わないといけないの?

ありがとうございます!

答えて

18

これは正常ですが、Aureliaはプロパティ取得者がいつ別の値を返すかを知る方法がないため、プロパティを変更するためにプロパティをポーリングします。

単純なプロパティ(ゲッターなし)の場合、Aureliaはプロパティを直接観察でき、ポーリングは必要ありません。

import {computedFrom} from 'aurelia-framework'; 

export class Foo { 
    _username = 'hello'; 

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

別のオプションは、バインディング、ワンタイムを使用することです:

${username & oneTime} 
+0

私は一時間を忘れてしまったあなたが観察するためにどのようなアウレリアの結合システムを言うことができるポーリングを避けるために

バインドされ、 'computedFrom'について知りませんでした。あなたの説明に感謝します! – Cohars

関連する問題