2015-12-08 10 views
7

Attualmente sto imparando e usando Aurelia e qualcosa di strano (forse normale) sta accadendo.Collegamento aurelia: property-getter chiamato ripetutamente

Quando si utilizza il seguente codice

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

E nel modello ${username}, il nome utente è sempre l'aggiornamento, più volte al secondo (e console.log vengono registrati più volte, così naturalmente).

La soluzione è semplicemente utilizzare una funzione e non un getter e chiamare ${username()} nel modello. Ma questo comportamento è normale? Quindi dovrei usare qualche volta getter a volte no?

Grazie!

risposta

18

Ciò è normale, Aurelia esegue il polling della proprietà per le modifiche perché non ha modo di sapere quando il getter della proprietà restituirà un valore diverso.

Se fosse una proprietà semplice (senza getter), Aurelia poteva osservare direttamente la proprietà, non sarebbe stato necessario il polling.

Per evitare il polling si potrebbe dire vincolante sistema di Aurelia cosa osservare:

import {computedFrom} from 'aurelia-framework'; 

export class Foo { 
    _username = 'hello'; 

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

Un'altra opzione sarebbe quella di utilizzare una sola volta vincolante:

${username & oneTime} 
+0

ho dimenticato quello che una volta vincolante, e non sapeva del 'computedFrom'. Grazie mille per le tue spiegazioni! – Cohars

Problemi correlati