2015-12-08 5 views
7

Ich lerne und benutze gerade Aurelia und irgendwas komisches (vielleicht normales) passiert.Aurelia-Bindung: Property-Getter wiederholt aufgerufen

Wenn mit dem folgenden Code

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

Und in der Vorlage ${username} wird der Benutzername immer aktualisiert wird, pro Sekunde mehrmals (und console.log wird mehrmals als auch natürlich angemeldet).

Die Problemumgehung besteht darin, einfach eine Funktion und kein Getter zu verwenden und in der Vorlage aufzurufen. Aber ist dieses Verhalten normal? Soll ich also manchmal getter manchmal nicht benutzen?

Danke!

Antwort

18

Das ist normal, Aurelia fragt Ihre Eigenschaft nach Änderungen ab, weil es keine Möglichkeit hat zu wissen, wann Ihr Property-Getter einen anderen Wert zurückgibt.

Wenn es eine einfache Eigenschaft (ohne einen Getter) wäre, könnte Aurelia die Eigenschaft direkt beobachten, würde keine Abfrage benötigt werden.

die Abfrage vermeiden Sie Aureliens Bindungssystem sagen konnte, was zu beachten:

import {computedFrom} from 'aurelia-framework'; 

export class Foo { 
    _username = 'hello'; 

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

Eine andere Möglichkeit wäre eine einmalige Bindung zu verwenden:

${username & oneTime} 
+0

ich vergaß die einmalige verbindlich, und wusste nicht über das 'compressedFrom'. Vielen Dank für Ihre Erklärungen! – Cohars

Verwandte Themen