2015-01-31 3 views
2

Я хотел бы добавить некоторые небольшие функции в AngularJS. Речь идет о проверке формы. Предположим, у меня есть форма. Я заполнил его и отправлю заполненный объект на сервер. Сервер сделал несколько ходов с этим объектом и решил, что поле «название» неверно. Сервер возвращает сообщение о недопустимом заголовке (давайте предположим, что эта проверка может быть сделана ТОЛЬКО на сервере, чтобы избежать обхода на стороне клиента).Сбросить все ошибки в форме

Я добавил программную ошибку с ошибкой. ($ scope.myForm.title. $ setValidity ('bad', false)); У меня есть класс .ng-invalid-bad, который помечает мое поле заголовка красной рамкой. Хорошо. Я меняю название и отправляю этот объект на сервер. Но в это время мое значение «description» конфликтует с заголовком, ошибка ответов сервера в описании ». Итак, теперь мне нужно сбросить все значения для всех полей и добавить новую «плохую» достоверность в поле «описание». Но я не нашел функции для сброса всей формы со всеми полями. Я пробовал $ setPristine и другие, но поля по-прежнему имеют класс «ng-invalid-bad». Я могу удалить его только тогда, когда я вызываю $ setValidity («bad», true) для каждого поля.

Я сделал некоторые обновления для angular.js в своей локальной копии для этой функции.

Вопросы: 1. Я что-то пропустил в документах об этой функциональности? 2. Если нет - могу ли я начать готовить свой PR для углового с этой функцией?

example: http://plnkr.co/edit/aev16Y3cAxTljhctUDMI  
  • Попробуйте заполнить первый вход, оставить второй один пустой. Нажмите GO! Вы должны увидеть второе поле с красной рамкой.
  • Очистите первый вход, затем заполните второй текст. Нажмите GO! Вы должны увидеть все входы, отмеченные красной рамкой.
+0

$ setPristine() должен сделать трюк. У вас есть какой-либо код для предоставления или plunkr, который реплицирует вашу проблему? – mengstrom

+0

добавлен plunkr ссылка на вопрос. – user3187702

+0

Кажется, что установка правильности в true - это единственный способ, поскольку $ setPristine только сбрасывает грязное, нетронутое и представленное состояние в форме и грязном и нетронутом состоянии всех своих элементов управления. – mengstrom

ответ

0

Если вам нужно сбросить все поля в форме, вы можете просто добавить кнопку сброса в форму.

<!DOCTYPE html> 
<html ng-app="formValidationApp"> 

<head> 
    <script src="https://code.angularjs.org/1.4.0-beta.2/angular.js" data-semver="1.4.0-beta.2" data-require="[email protected]"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
</head> 

<body ng-controller="controllers.root"> 
    <form name="superform" novalidate> 
    <input name="title" ng-model="superObject.title" /> 
    <br/> 
    <input name="description" ng-model="superObject.description" /> 
    <br/> 
    <input type="reset" /> 
    <button ng-click="go()">go!</button> 
    </form> 
</body> 

</html> 
+0

Мне нужно сбросить только ошибки. Не содержание или что-то еще. – user3187702

+0

Вы хотите сбросить эти ошибки нажатием кнопки? Это то, что вам нужно? – Sanjaya

+0

Да, что-то в этом роде. – user3187702

Смежные вопросы