В приложении Aurelia я использую поведение привязки.Выглядит это так:
<div id="slider" ej-slider="e-value.two-way:controller.item.progress & intercept:controller.saveChange;" ></div>
Поведение привязки перехвата отсюда - это привязка controller.saveChange
, которая действительно вызывается.
Однако,проблема в том, что в этом методе this
относится не к контроллеру, а к привязке.Поэтому я не могу получить доступ к методам и свойствам контроллера, которые необходимы для фактического сохранения.
Вот как выглядит поведение привязки:
export class InterceptBindingBehavior {
readonly interceptMethods = ['updateTarget', 'updateSource', 'callSource'];
bind(binding, scope, interceptor) {
let i = this.interceptMethods.length;
while (i--) {
let method = this.interceptMethods[i];
if (!binding[method]) {
continue;
}
binding[`intercepted-${method}`] = binding[method];
let update = binding[method].bind(binding);
binding[method] = interceptor.bind(binding, method, update);
}
}
unbind(binding, scope) {
let i = this.interceptMethods.length;
while (i--) {
let method = this.interceptMethods[i];
if (!binding[method]) {
continue;
}
binding[method] = binding[`intercepted-${method}`];
binding[`intercepted-${method}`] = null;
}
}
}
Как решитьэто?