Это сообщение является шагом вперед angular custom validation unique email trigger once
так с кодом в старом посте я понял, что значение поля электронной почты (когда я отправляю сервер) не определен, поэтому я попытался как
<!doctype html>
<html data-ng-app="myApp">
<head>
<meta charset="utf-8">
</head>
<body>
<div data-ng-controller="myCtrl">
<form novalidate id="frm-signup" name="addContestantFrm" data-ng-submit="add()">
<div>
<label for="email">Email: *</label>
<input type="email" id="email" name="email" class="input-medium" tabindex="3" title="email" maxlength="255" value="{{contestant.email}}" placeholder="email" data-ng-model="contestant.email" required email-unique />
</div>
<div>
<input type="submit" id="sbmt" name="sbmt" class="input-sbt" data-ng-disabled="!addContestantFrm.$valid" value="Send" />
</div>
</form>
</div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.angularjs.org/1.0.8/angular.min.js"></script>
<script>
var app = angular.module('myApp', []);
app.factory('Contestant',function($http){
return {
checkUniqueEmail : function(email){
return $http.post('./checkemail.php',{email:email});
}
}
});
app.controller('myCtrl',function($scope){
$scope.add = function(){
console.log($scope.contestant);
}
});
app.directive('emailUnique',function(Contestant) {
return {
require: 'ngModel',
link: function(scope, element, attrs,ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
console.log(ctrl.$error.email);
Contestant.checkUniqueEmail(viewValue).success(function (response) {
ctrl.$setValidity('emailUnique', true);
scope.$apply(function(scope) {
ctrl.$setViewValue('email', viewValue);
});
return viewValue;
})
.error(function (data) {
ctrl.$setValidity('emailUnique', false);
console.log(viewValue);
return undefined;
});
});
}
}
});
</script>
</body>
</html>
дать мне $ дайджеста уже в процессе
так хо ш путь, чтобы установить значение электронной почты для отправки на сервер (теперь это просто пример)
Update
Я попытался с если
(!scope.$$phase) {
//never excuted
}
возможно дубликат [AngularJS проверки пользовательской формы с помощью $ HTTP] (http://stackoverflow.com/questions/16810913/angularjs-custom-form-validation-using -http) – m59
Я написал директиву, чтобы позаботиться об этой функциональности и любых подобных обстоятельствах. Проверьте это здесь: http://stackoverflow.com/a/25678196/1435655 – m59