2015-12-08 10 views
7

Şu anda Aurelia'yı öğreniyorum ve kullanıyorum ve garip (belki normal) bir şeyler oluyor. Aşağıdaki kodu Aurelia ciltleme: defalarca çağrılan özellik-getter

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

Ve şablona ${username} yılında

kullanırken

, kullanıcı adı daima saniyede birkaç kez güncelliyor (ve console.log defalarca yanı seyrini kaydedilir).

Çözüm, yalnızca bir işlevi değil, bir işlevi kullanmak ve şablonda ${username()} numaralı telefonu aramaktır. Ama bu davranış normal mi? Yani bazen bazen getter kullanmamalı mıyım?

Teşekkürler!

cevap

18

Bu normaldir, Aurelia, mülkünüzün ne zaman farklı bir değer döndüreceğini bilmenin bir yolu olmadığı için değişiklikler için mülklerinizi yoklar. Basit bir mülk olsaydı (alıcı olmadan) Aurelia doğrudan mülkünü gözlemleyebilirdi, oylama gerekmezdi.

gözlemlemek için ne Aurelia'nın bağlama sistemini söyleyebilirdi yoklama kaçınmak için:

import {computedFrom} from 'aurelia-framework'; 

export class Foo { 
    _username = 'hello'; 

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

Diğer bir seçenek bağlayıcı bir defalık kullanmak olacaktır:

${username & oneTime} 
+0

Ben bir zamanlar unuttuk Bağlama ve 'computedFrom' hakkında bilgi sahibi olmadı. Açıklamalarınız için çok teşekkürler! – Cohars