Peut Angulaire du modèle de la fonction d'appel de retour promesse
Angulaire de $q documentation dit "$q promesses sont reconnus par le moteur de template dans angulaire, ce qui signifie que dans les modèles, vous pouvez traiter les promesses attachées à un champ comme s'ils étaient les valeurs qui en résulte."
Angulaire de modèles d'affichage vous permettent également d'évaluer des expressions, ce qui signifie que vous pouvez appeler des fonctions exposées à partir de la portée.
J'ai trouvé qu'un modèle de vue est de pouvoir se référer à des valeurs réelles, des promesses (qui finalement se résoudre à valeurs réelles), ou des fonctions retournant des valeurs réelles, mais pas les fonctions de renvoi de promesses, qui a toujours rendu {}
dans le modèle de vue.
J'ai créé un violon avec un exemple de ce.
Quelqu'un peut faire mieux ou m'orienter dans la bonne direction?
(Peut-être en utilisant une fonction dans le modèle de vue est une mauvaise idée; il y a d'autres problèmes avec cette technique, car Angulaire de regarder une fonction ne peut pas dire si elle est modifiée sans l'appel de la fonction, afin de le regardé fonction est évaluée sur chaque digérer cycle. J'ai vu ces deux questions et dans deux d'entre eux, la réponse recommandée est d'utiliser promesse.alors pour changer un normal bien sur la portée et de la vue modèle de regarder la normale de la propriété au lieu de la promesse. Je le conçois, mais pour mon utilisation, je veux fournir certains paramètres pour calculer une valeur, et il est commode pour la fourniture de ces paramètres directement dans le modèle de vue. Fondamentalement, je suis en train d'écrire quelque chose comme url_for dans Flacon ou Rails.)
OriginalL'auteur metamatt | 2013-10-23
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr, mais si vous retourne un objet avec la promesse en tant que propriété, il fonctionne. (fiddle)
HTML:
Yup, fonctionne pour moi. Quand j'aurai plus de temps, je vais essayer de creuser dans le code source et de comprendre pourquoi, et si c'est un bug digne de signaler que le raw promesse renvoyée par une fonction ne fonctionne pas. C'est une astuce utile, cependant.
OriginalL'auteur Jason Goemaat
Un promesse représente une valeur d'avenir, généralement un avenir à la suite d'une opération asynchrone, et nous permet de définir ce qui va se passer une fois que cette valeur devient disponible ou lorsqu'une erreur se produit.
Référence
Vous pouvez envelopper toute valeur d'une promesse, à l'aide de la méthode utilitaire
$q.when()
.==============================
Dans votre exemple:
HTML
JS
Démo Violon
(Je suis d'accord que votre solution fonctionne, et compte tenu de la façon dont les montres évaluer les fonctions regardé les expressions de chaque digérer cycle, c'est peut-être pour le mieux pour éviter d'utiliser des appels de fonction dans les modèles d'affichage. Cependant, j'aimerais comprendre pourquoi Angulaire peut gérer les appels de fonction et les promesses dans les expressions de modèle, mais pas ensemble.)
En général, je voudrais mettre
promise
logique en service (Singleton) et l'utiliser comme utilitaireAutomatique déballage de promesses de ne plus travailler dans Angulaire >= 1.2.0 - voir les discussions dans les #4158, #4270 et #5153
OriginalL'auteur Maxim Shoustin