JSONに存在するユーザーを反復処理する必要があります。 currentValue
のいずれかが一致する場合は、$setValidity
を使用して無効に設定する必要があります。このように:
dataService.getUsers().then(function(currentusers) {
console.log(currentusers)
//Ensure value that being checked hasn't changed
//since the Ajax call was made
if (currentValue == element.val()) {
currentusers.forEach(function(user) {
if (currentValue === user.property) {
ngModel.$setValidity('unique', false)
}
});
}
}, function() {
//Probably want a more robust way to handle an error
//For this demo we'll set unique to true though
ngModel.$setValidity('unique', true);
});
});
また、サービスは毎回JSONを取得していました。また、角度サービス(これはシングルトン)内の変数にJSONレスポンスを格納することができますので、以前より速くなります。このように、
dataFactory.getUsers = function() {
var deferred = $q.defer()
if (angular.isDefined(savedResults)) {
deferred.resolve(savedResults.data);
return deferred.promise;
} else {
return $http.get(serviceBase).then(
function(results) {
savedResults = results
return results.data;
});
}
};
ここでは、データがすでに利用可能である場合、解決済みの約束を返します。 JSONを初めて取得し、内部から使用します。
working plunker
ありがとうございます。できます 。 –