AngularJS: Inicializar de forma asíncrona el filtro
Tengo problemas para intentar inicializar un filtro con datos asíncronos.
El filtro es muy simple, necesita traducir las rutas al nombre, pero para hacerlo necesita una matriz de correspondencia, que necesito obtener del servidor.
Podría hacer cosas en la definición del filtro, antes de devolver la función, pero el aspecto asíncrono impide que
angular.module('angularApp').
filter('pathToName', function(Service){
// Do some things here
return function(input){
return input+'!'
}
}
El uso de una promesa puede ser viable, pero no entiendo bien cómo se filtran las cargas angulares. Estaenviar explica cómo lograr esa magia con servicios, pero ¿es posible hacer lo mismo con los filtros?
Y si alguien tiene una mejor idea sobre cómo traducir esos caminos, soy todo oídos.
EDITAR:
Lo intenté con el enfoque de la promesa, pero algo no está bien, y no veo qué:
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;
}
)
};
});
Realmente no estoy familiarizado con las promesas, ¿es la forma correcta de usarlas?