Оценка валидации формы в изолированной области пользовательской директивы 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);
});