AngularJS: inicializa assincronamente o filtro
Estou com problemas para tentar inicializar um filtro com dados assíncronos.
O filtro é muito simples, ele precisa traduzir os caminhos para o nome, mas para isso ele precisa de uma matriz de correspondência, que eu preciso buscar no servidor.
Eu poderia fazer as coisas na definição do filtro, antes de retornar a função, mas o aspecto assíncrono impede que
angular.module('angularApp').
filter('pathToName', function(Service){
// Do some things here
return function(input){
return input+'!'
}
}
Usando uma promessa pode ser viável, mas eu não tenho qualquer entendimento claro sobre como filtros de cargas angulares. estepostar explica como conseguir tal magia com serviços, mas é possível fazer o mesmo para filtros?
E se alguém tiver uma ideia melhor de como traduzir esses caminhos, sou todo ouvidos.
EDITAR:
Eu tentei com a promessa de compromisso, mas algo não está certo, e eu não consigo ver o que:
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;
}
)
};
});
Eu não sou realmente familliar com promessas, é o caminho certo para usá-los?