AngularJS - установить чистую форму без устранения ошибок проверки
У нас есть автосохранение и явное сохранение для конкретной формы (это длинная форма, и мы не хотим, чтобы пользователь терял данные). При явном сохранении недопустимые данные будут блокировать сохранение, и XHR не будет отправлено обратно на сервер. Однако для автосохранения мы хотим, чтобы данные были сохранены (если это возможно) независимо от внешней проверки.
Что нам нужно сделать, так это то, что если сохранение выполнено успешно на бэкэнде, то внешний интерфейс должен пометить форму как больше не грязную. Но... и вот стикер - он не должен удалять любые ошибки проверки / сообщения об ошибках из формы.
Исходя из того, что я вижу (или, по крайней мере, из того, что я понимаю), .$ SetPristine() удаляет форму, но проблематично также удаляет ошибки проверки.
Есть ли способ очистить форму, не удаляя ошибки проверки, чтобы автосохранение не запускалось, когда уже выполнено сохранение, но чтобы у пользователя оставалось сообщение о том, какие поля являются недействительными, чтобы они могли исправить проблемы?
Спасибо!
1 ответ
Форма $pristine
/ $dirty
государства не связаны с $valid
/ $invalid
состояния. Ваши сообщения об ошибках не должны быть удалены (если вы не используете $pristine
/ $dirty
в состоянии, которое показывает / скрывает сообщения).
Таким образом, вы можете вызвать FormController's $setPristine()
метод в вашей функции автосохранения, который "очистит" форму, но не повлияет на проверку и сообщения об ошибках.
Смотрите также это короткое демо.
Например:
* В скрипте выше введите что-то в одно поле (чтобы оно стало действительным, а форма стала грязной).
* The Save
кнопка активируется.
* Нажатие Save
Кнопка устанавливает состояние формы в $pristine
, так что кнопка отключается (это имитирует автосохранение).
* Сообщения об ошибках все еще видны (и состояние действительности формы не изменяется).