ich eine Asynchron-Validierung Richtlinie haben, die funktioniert gut, wenn, aber es hängt von zwei Felder zu definieren, wenn eine Person existiert (numid und Typ), hier ist der Code:Angular async Validierung mit mehreren Formularfelder
app.directive('personaUnica', function($http, $q){
return{
require:'ngModel',
scope: {
tipo: "=personaUnica"
},
link: function(scope, element, attrs, ctrl){
ctrl.$asyncValidators.personaUnica = function(modelValue, viewValue){
if (ctrl.$isEmpty(modelValue)) {
// valido si es vacio
return $q.when();
}
var defer = $q.defer();
$http.get('/someRESTEndpoint/', {
params:{ identificacion: modelValue, tipo: scope.tipo }
}).then(function(respuesta){
//Person found, not valid
if(respuesta.data.elementoExiste){
defer.reject('Persona existe.');
}
}, function(respuesta){
//Person not found, resolve promise
if(!respuesta.data.elementoExiste){
defer.resolve();
}
});
return defer.promise;
}
}
}
});
Aber ich weiß nicht, wie man die gleiche Validierung durchführt, wenn sich das andere abhängige Feld geändert hat.
Ich habe etwas über Require^Form in der Direktive gelesen, aber irgendwie verloren.
Ich habe versucht, diesen Codeblock
scope.$watch('tipo', function(){
ctrl.$validate();
});
hinzufügen, aber dann bekomme ich eine unendliche Schleife $ verdauen.
Vielen Dank im Voraus.
ich, dass Validatoren gefunden auf die Form der Last feuern, nicht, wenn der Wert ändert. Hast du herausgefunden, wie man nur feuert, wenn du den Wert änderst? Siehe meine Frage https://StackOverflow.com/Questions/46101820/Do-AsyncValidators-Fire-all-the-Time – Naomi