#angularjs
#angularjs
Вопрос:
У меня есть поле электронной почты в моей форме, которое проверяется как на то, что оно не пустое, так и на действительное электронное письмо. Код выглядит следующим образом (см. plunker — Angular 1.3.0-beta.13
):
<form name="myForm" novalidate>
<input type="email" name="email" ng-model="email" required>
<span ng-show="myForm.email.$error.required">Missing Email</span> |
<span ng-show="myForm.email.$error.email">Invalid Email</span>
<pre>myForm.email.$error: {{ myForm.email.$error | json }}</pre>
</form>
При запуске отображается только сообщение «Отсутствует электронная почта», как и ожидалось. Когда я начинаю вводить ввод, отображаются оба сообщения Missing Email
и Invalid Email
, даже если поле не пустое! Этого не ожидается.
При вводе действительного электронного письма обе ошибки исчезают, как и ожидалось:
При переходе из допустимого состояния электронной почты в недопустимое состояние электронной почты (с помощью символов удаления) отображается только недопустимое сообщение электронной почты, как и ожидалось:
Кажется, что angular останавливается при первом нарушении проверки, оставляя объект $error в устаревшем состоянии.
Это ошибка в фреймворке? я что-то здесь упускаю?
Комментарии:
1. Возможно, вы что-то упускаете. Это работает так, как ожидалось в этом plunkr .
2. @SunilD. Я использую angular 1.3.0
3. В значении модели не будет сохранено значение, пока не будет «допустимого» значения, поэтому значение
{{ email}}
, чтобы увидеть результат в режиме реального времени, и вы увидите.4. @JoseM любая документация или обоснование того, почему модель, сгенерированная формой для полей ввода, не обновляется? Даже если модель не обновляется, я все равно ожидаю, что правила проверки будут выполняться до завершения, а не останавливаться и оставлять устаревший объект $error
Ответ №1:
Это ошибка в бета-версии angularjs 1.3.0 (по крайней мере, до бета-версии.13). Запрос на извлечение находится на рассмотрении.