Оценка валидации формы в изолированной области пользовательской директивы angularjs

Мне нужно добавить класс, чтобы выделить обязательную ошибку поля внутри директивы. Директива использует форму и другую переменную области действия, чтобы определить, является ли модель действительной или нет.

HTML:

<text-complete members="templateMentions" message="Event.Subject" control="EventSubject" form="eventForm" validate-me="eventFormAlert" control-rows="3"></text-complete>

Директива:

angular
    .module('myApp')
    .directive('textComplete', ['Textcomplete', function (Textcomplete) {
        return {
            require: '^form',
            restrict: 'EA',
            scope: {
                members: '=',
                message: '=',
                validateMe: '=',
                control: '=',
                form: '=',
                controlRows: '='
            },
            template: '<textarea ng-model="message" name="control" ng-class="{\'error-alert-border-i\': form.control.$error.required && validateMe}" class="form-control width-100-i" autocomplete="off" type="text" required></textarea>',
            link: function (scope, iElement, iAttrs, ngModel) {

                //code removed for brevity
            }
        };
    }]);

Код работает нормально при первой загрузке страницы, и я вижу красный контур. Но когда я обновляю модель, основной момент не уходит. Будет ли код автоматически обновлять значение области, когда я изменяю его внутри текстовой области?

Нужно ли мне компилировать или использовать тайм-аут, чтобы изменение отражало то есть выражение класса ng, чтобы оно стало ложным?

ОБНОВИТЬ

Я попытался вручную изменить действительность, но это тоже не сработало:

iElement.bind('keyup', function () {
                    var isValid = scope.message.length > 0 && scope.validateMe;
                    $timeout(function () { ngModel.$setValidity(iAttrs.message, isValid); }, 1);

                });

0 ответов

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