AngularJS: Filter asynchron initialisieren
Ich habe Probleme beim Versuch, einen Filter mit asynchronen Daten zu initialisieren.
Der Filter ist sehr einfach. Er muss Pfade in Namen übersetzen, benötigt jedoch ein Korrespondenz-Array, das ich vom Server abrufen muss.
Ich könnte Dinge in der Filterdefinition tun, bevor ich die Funktion zurückgebe, aber der asynchrone Aspekt verhindert dies
angular.module('angularApp').
filter('pathToName', function(Service){
// Do some things here
return function(input){
return input+'!'
}
}
Die Verwendung eines Versprechens ist möglicherweise sinnvoll, aber ich verstehe nicht genau, wie die Winkelbelastung filtert. DiesePost erklärt, wie man solche Magie mit Diensten erzielt, aber ist es möglich, dasselbe für Filter zu tun?
Und wenn jemand eine bessere Idee hat, wie man diese Pfade übersetzt, bin ich ganz Ohr.
BEARBEITEN:
Ich habe es mit dem Versprechen versucht, aber etwas stimmt nicht, und ich verstehe nicht, was:
angular.module('angularApp').filter('pathToName', function($q, Service){
var deferred = $q.defer();
var promise = deferred.promise;
Service.getCorresp().then(function(success){
deferred.resolve(success.data);
}, function(error){
deferred.reject();
});
return function(input){
return promise.then(
function(corresp){
if(corresp.hasOwnProperty(input))
return corresp[input];
else
return input;
}
)
};
});
Ich bin nicht wirklich vertraut mit Versprechungen, ist es der richtige Weg, sie zu nutzen?