Я хотел бы создать пользовательское поведение привязки, которое позволяет обнаруживать ЛЮБЫЕ изменения свойств объекта, например:
<my-form model.bind="myObject & objectObserver:myObjChanged()"></my-form>
Я знаю, что могу использовать механизм связывания Aurelia для создания наблюдателя свойств, и, возможно, я могу встроить его в пользовательское поведение привязки, чтобы обнаруживать свойства объекта и создавать наблюдатели свойств для каждого из них. Но я не могу понять смысл связывающего объекта, который дан мне в обычном поведении связывания. Вот мой код:
import { inject, bindingBehavior, BindingEngine } from 'aurelia-framework';
@bindingBehavior('objectObserver')
@inject(BindingEngine)
export default class ObjectObserverBindingBehavior {
constructor(bindingEngine) {
this.bindingEngine = bindingEngine;
}
bind(binding, scope, interceptor) {
console.warn('hello', binding, scope, interceptor);
}
unbind(binding, scope) {
console.warn('observer.unbind()', binding, scope);
}
}
Когда происходит связывание и выводится консольный текст, я вижу
Так что я знаю, что это работает, но я не знаю, как лучше всего начать смотреть. Я вижу связанный объект внутри targetObserver.currentValue. Это лучшее свойство, чтобы начать смотреть? Есть ли другой способ, который использует существующую функциональность Aurelia Binding Engine?