У меня есть директива "ensureUniqueValidator" для проверки уникальности значений в базе данных. Функция универсальная. Он вызывается на HTML-странице следующим образом:
<input type="email" name="email" ng-model="userCtrl.user.email"
required ensure-unique-validator />
Код директивы:
app.directive('ensureUniqueValidator', [
'$http',
function($http) {
return {
restrict : 'A',
require : 'ngModel',
link : function(scope, ele, attrs, c) {
c.$parsers.push(function(val) {
return $http.get(
'MainServlet.do?method=is' + attrs.name
+ 'unique&' + attrs.name + '='
+ val).then(
function(result) {
console.log(result.data);
c.$setValidity('ensureUniqueValidator',
result.data);
return result.data;//returns true or false
});
});
}
}
} ]);
Проблема в том, что форма остается действительной, даже если сервер вернулся как False. Похоже, функция $setValidity не аннулирует форму.
Я делаю что-то не так здесь? Заранее спасибо.
c.$asyncValidators
, а неc.$parsers
- person Phil   schedule 21.04.2015script.js
) по ссылке Пользовательские средства проверки выше. Директиваusername
похожа на то, что вы хотите. Вам просто нужно вернуть обещание - person Phil   schedule 21.04.2015