У меня возникли проблемы с инициализацией фильтра с помощью асинхронных данных.
Фильтр очень прост, ему нужно перевести пути для имени, но для этого ему нужен соответствующий массив, который мне нужно извлечь с сервера.
Я могу сделать что-то в определении фильтра, прежде чем возвращать функцию, но асинхронный аспект предотвращает это
angular.module('angularApp').
filter('pathToName', function(Service){
// Do some things here
return function(input){
return input+'!'
}
}
Использование обещания может быть жизнеспособным, но у меня нет четкого понимания того, как angular загружает фильтры. Это сообщение объясняет, как достичь такой магии с помощью сервисов, но возможно ли это сделать для фильтров?
И если у кого-то есть лучшая идея о том, как перевести эти пути, я все уши.
EDIT:
Я пробовал с обещанием, но что-то не так, и я не вижу, что:
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;
}
)
};
});
Я действительно не знаком с promises, это правильный способ их использования?