getObserver
возвращает свойство observer, которое уведомит вас, когда изменения свойства класса ViewModel
изменятся. Это произойдет только при назначении нового значения для свойства list
, то есть this.list = [1,2,3]
. Если вы не назначаете новые значения для свойства list
и вместо этого изменяете значение свойства через push
, pop
, splice
и т. Д., Вы захотите использовать наблюдателя массива. Используйте ObserverLocator
«s getArrayObserver
это ме- принимает один параметр, массив вы хотите наблюдать:
import {ObserverLocator} from 'aurelia-binding'; // or from 'aurelia-framework'
@inject(ObserverLocator)
export class ViewModel {
constructor(obsLoc) {
this.list = [];
obsLoc.getArrayObserver(this.list);
.subscribe(splices => console.log(splices));
}
}
октября 2015 Обновление
ObserverLocator является Аурелии внутренний„голый металл“API. В настоящее время существует общедоступный API-интерфейс для механизма привязки, который может быть использован:
import {BindingEngine} from 'aurelia-binding'; // or from 'aurelia-framework'
@inject(BindingEngine)
export class ViewModel {
constructor(bindingEngine) {
this.list = []; // any Array, Map and soon Set will be supported
// subscribe
let subscription = bindingEngine.collectionObserver(this.list)
.subscribe(splices => console.log(splices));
// be sure to unsubscribe **later**
subscription.dispose();
}
}
Достаточно ли было бы просмотреть список.length? Не будет ли проще видеть, как происходят изменения? – sam