Директивное одностороннее связывание данных с динамически именуемой переменной
Итак, у меня есть форма с динамическим именем. Он динамический, потому что компонент, частью которого он является, используется внутри ngRepeat:
<ng-form name="{{$ctrl.formName}}">
Я пытаюсь создать директиву, которая использует одностороннюю привязку данных, поэтому я могу использовать метод $onChanges() для отслеживания изменений. Что-то вроде этого:
<ng-form name="{{$ctrl.formName}}" pristine-watch="[$ctrl.formName].$pristine">
class PristineWatchController {
$onChanges(changes) {
const pristine = changes.pristine;
if (pristine && pristine.currentValue !== pristine.previousValue && !pristine.isFirstChange()) {
this.pristine = pristine.currentValue;
// do something here
}
}
}
const pristineWatchDirective = function () {
return {
require: {form: '^form'},
bindToController: {
pristine: '<pristineWatch',
name: '@'
},
scope: false,
controller: PristineWatchController
};
};
export default pristineWatchDirective;
У меня проблема в том, что я не могу придумать, как правильно передать динамическую именованную переменную в одностороннюю привязку. Выше не работает. Какие-либо предложения? Я могу просто установить $ watch в директиве, но использование $ onChanges было бы более чистой установкой.