2015-12-08 1 views
7

В настоящее время я изучаю и использую Aurelia, и что-то вроде странного (может быть, нормального) происходит.Aurelia binding: свойство-getter, вызываемое повторно

При использовании следующего кода

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

И в шаблоне ${username}, имя пользователь всегда обновление, несколько раз в секунду (и console.log в несколько раз, а также, конечно, вошел).

Обходной путь - просто использовать функцию, а не геттер, и вызвать ${username()} в шаблоне. Но нормально ли это поведение? Так что иногда я иногда использую геттер?

Спасибо!

ответ

18

Это нормально, Аурелия опроса вашего имущества для изменений, потому что он не знает, когда ваше свойство-получатель вернет другое значение.

Если бы это было простое свойство (без геттера), Аурелия могла непосредственно наблюдать за этим имуществом, никаких опросов не требовалось.

Чтобы избежать опроса можно сказать связывающую системе Аурелии, что наблюдать:

import {computedFrom} from 'aurelia-framework'; 

export class Foo { 
    _username = 'hello'; 

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

Другим вариантом был бы использовать одноразовое связывание:

${username & oneTime} 
+0

Я забыл о единовременном и не знал о 'computedFrom'. Большое спасибо за ваши объяснения! – Cohars