AngularJS : Comment utiliser $http dans un filtre

Je voudrais faire une demande à mon backend dans un filtre et de retourner le résultat de ma demande.
Le problème, c'est le service $http retour d'une promesse et c'est le problème.

Pour présenter la question, j'ai utilisé un $timeout et les promesses de angulaire dans mon violon :
mon violon

Dans mon filtre j'ai utiliser un $timeout avec une promesse, mais l'objectif final est d'utiliser une requête 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;
};

});

Alors, à mon avis, je utiliser mon filtre qui est supposé afficher "ca marche", avec un retard de 2 secondes, mais cela ne fonctionne pas :

<div ng-controller="MyCtrl">
   {{hello|filterHello}}
</div>

Vous pouvez voir que le filtre de retour rien et qu'il y a une boucle infinie dans le filtre en raison de l'nulle promesse, je pense.

Si vous ne comprenez pas pourquoi je veux utiliser une requête http dans un filtre, la réponse est simple.
Pour exemple, j'ai un objet utilisateur avec les champs : email,nom,company_id..
Et j'ai un autre objet de l'entreprise avec les champs : nom, createOn,...
Je voudrais utiliser le filtre de ce genre pour afficher le nom de l'utilisateur de l'entreprise :

{{utilisateur.company_id | ShowNameCompany}}

Donc, j'ai besoin de faire une requête http dans le filtre de ma société contrôleur de mon backend.

J'espère que quelqu'un pourra m'aider.

  • Poste le code que vous avez essayé merci
  • Lien de votre violon
  • Les filtres de feu BEAUCOUP! Il doit y avoir une bande passante plus convivial méthode de réalisation de votre objectif.
  • Le violon, le lien ne s'affiche pas car il a un [2]: en face d'elle. Et encore, sur ce, vous ne pouvez pas poster un lien vers jsfiddle.net sans ajouter également un peu de code à votre question. S'il vous plaît ajouter un peu de code et assurez-vous que le lien est correct. Merci.
  • Quel est l'objectif de la fin ici? Pourquoi êtes-vous à l'aide de $http dans les filtres en premier lieu?
  • Oui désolé j'ai corrigé le lien pour le violon. Mike je suis d'accord avec vous, mais si j'utilise le cache pour ma demande, je vais faire une seule demande et obtenez les données dans le cache
  • Je viens de mettre à jour mon post où j'explique mon objectif.
  • Votre mise à jour le fait ressembler vous devez créer une directive, pas un filtre.

InformationsquelleAutor FlavienBert | 2013-11-08