Почему недействительная форма действительна сначала и сразу после того, как оказывается недействительной?
Чтобы упростить вещи, я составил образец формы для описания моего вопроса:
<form novalidate name="form">
<input required name="foo" ng-model="my.foo">
</form>
А также контроллер:
angular.module('sample', []).controller('MainController', function($scope) {
$scope.$watch('form.$valid', function (valid) {
console.log(valid);
});
});
Ожидаемый результат:
> false
Фактический результат:
> true
> false
Кто-нибудь может мне сказать, почему сначала форма действительна, а потом становится недействительной (кстати, какой она должна быть)?
1 ответ
Я на самом деле уверен, что это связано с приоритетом директив.
В угловых <form>
на самом деле директива. required
это еще один.
Пусть supose у нас есть форма без проверки. Форма всегда действительна. Я уверен, что теперь мы можем сказать, что форма действительна по умолчанию.
Директива "form" имеет более высокий приоритет, чем "required". Это означает, что в определенный момент. Angular применяет директиву "form", а не "обязательную". Этот результат в правильной форме с вводом с неизвестным атрибутом "требуется". В следующем дайджесте будет проанализирована директива "required". Он обнаружил, что ввод пуст и установил допустимое значение false.
Как сказал Омри, речь идет о цикле приоритетов и дайджестов.