Обновленный вопрос со скрипкой.
Оригинал находится здесь: https://stackoverflow.com/questions/31874313/angularjs-clean-remote-validation-error-after-change-input
В моей форме у меня есть два валидаций. Сначала локальный, второй - удаленный.
Так что это мой пример
<form ng-controller="MyCtrl" name="Form">
<div class="form-group">
<label class="control-label">
First Name
</label>
<input type="text" class="form-control" name="firstName" ng-model="myModel.firstName" required />
<span class="error" ng-if="Form.firstName.$dirty && Form.firstName.$invalid" ng-repeat="(e, b) in Form.firstName.$error">{{e}}</span>
</div>
<input type="submit" ng-click="submit(Form)">
</form>
Вот контроллер
function MyCtrl($scope, $element) {
$scope.submit = function (form) {
if (form.$invalid) {
renderErrors(form);
return;
}
console.log('local validation passed');
// imitation of remote error
// send, then data
if($scope.myModel.firstName === 'Tom')
renderServerErrors({firstName: ['Already in use']}, form);
else
alert('Success');
}
/**
* Errors will appear below each wrong input
*/
var renderErrors = function(form){
var field = null;
for (field in form) {
if (field[0] != '$') {
if (form[field].$pristine) {
form[field].$dirty = true;
}
}
}
};
/**
* Server errors will appear below each wrong input
*/
var renderServerErrors = function(err, form){
var field = null;
_.each(err, function(errors, key) {
_.each(errors, function(e) {
form[key].$dirty = true;
form[key].$setValidity(e, false);
});
});
}
}
http://jsfiddle.net/uwozaof9/6/
Если вы наберете 'Том' на вход - вы никогда не будете подавать форму более ..
И я хочу удалить ошибки сервера из стека ошибок ввода при его изменении ,
Пожалуйста, помогите!
Ожидается, потому что первое, что вы делаете в функции '$ scope.submit()', - это проверять прошлые ошибки через 'form. $ Invalid', что верно, если хотя бы один элемент управления недействителен. –
Итак, что мне делать? –