AngularJS - Что мне нужно делать вручную, когда я использую ngModelOptions allowInvalid = true?

0

Я новичок в AngularJS, и теперь я работаю над довольно сложной формой, которая выглядит так, как если бы я мог воспользоваться опцией ngModelOptions { allowInvalid: true }.

Я полагаю, что есть веская причина, по которой поведение по умолчанию в AngularJS - это сбить значение модели, если недопустимое значение представления недопустимо. Сначала я предполагаю, что недопустимое значение не передается серверу, когда пользователь отправляет данные.

Поэтому я думаю, что мои вопросы

  • Какие угловые функции я проиграю при использовании этой опции?
  • Я предполагаю, что мне нужно вручную проверить достоверность этих значений каждый раз, когда пользователь пытается отправить данные. Существуют ли какие-либо угловые методы удобства, которые я должен использовать для проверки этих данных и отображения сообщений об ошибках?
  • Есть ли что-то еще, что мне не хватает, о чем мне нужно подумать при использовании этого параметра?
Теги:

2 ответа

2

Вы не теряете никаких угловых функций, кроме, конечно, предотвращения недопустимых значений, установленных на модели.

Элемент управления моделью по-прежнему отмечен как недействительный, его просто так, что вместо того, чтобы установить значение в undefined, это позволит установить недопустимое значение в модели.

Одна вещь, на которую следует обратить внимание при использовании этого флага, - это все, что смотрит на значение модели. Так как обычно недопустимое поле не запускает события $ watch после того, как этот флаг установлен, вы можете передавать плохие значения другим директивам или функциям.

1

AllowInvalid может быть полезен в ситуациях, когда вы хотите что-то сделать с недопустимым значением. Хорошим примером может быть создание директивы отображения силы пароля. Если вы не разрешаете пароли под словами "7 символов", вы не знаете, что пользователь печатает до получения 8-го символа, поэтому вы не сможете дать отзыв.

Использование AllowInvalid не указывает поле как действительное, поэтому вы все равно можете использовать form.password. $ Invalid для отображения сообщений об ошибках.

Перед отправкой вы можете проверить, действительно ли поле или даже более общая форма действительны до передачи данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню