Я хотел бы сделать запрос к моему серверу в фильтре и вернуть результат моего запроса. Проблема заключается в том, что сервис $http возвращает обещание, и это проблема.
В качестве примера я использовал $timeout и promises of angular в моей скрипке: моя скрипка
В моем фильтре я использую $timeout с обещанием, но конечной целью является использование запроса http:
myApp.filter('filterHello', function ($http,$timeout,$q) {
return function (company_id) {
console.log("in the filter");
var deferred = $q.defer();
$timeout(function() {
deferred.resolve("ca marche");
}, 2000);
return deferred.promise;
};
});
Тогда, на мой взгляд, я использую свой фильтр, который предположительно отображает "ca marche" с задержкой в 2 секунды, но это не работает:
<div ng-controller="MyCtrl">
{{hello|filterHello}}
</div>
Вы можете видеть, что фильтр ничего не возвращает и что в фильтре существует бесконечный цикл из-за нулевого обещания, которое я думаю.
Если вы не понимаете, почему я хочу использовать запрос http в фильтре, ответ прост. Например, у меня есть пользователь объекта с полями: email, name, company_id.. И у меня есть другая компания-объект с полями: name, createOn,... Я хотел бы использовать фильтр, подобный этому, для отображения имени компании-пользователя:
{{user.company_id | ShowNameCompany}}
Итак, мне нужно сделать запрос http в фильтре моему контроллеру моей бэкэнда.
Надеюсь, кто-то может мне помочь.