Директивное одностороннее связывание данных с динамически именуемой переменной

Итак, у меня есть форма с динамическим именем. Он динамический, потому что компонент, частью которого он является, используется внутри 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 было бы более чистой установкой.

0 ответов

Другие вопросы по тегам