J'ai une application angularjs avec des contrôleurs.js et des usines.js.
Ce que j'aime, c'est faire quelque chose avec les valeurs du contrôleur (que je reçois des usines). Mon problème est que ces valeurs sont vides au moment où j'accumule-leur. P>
Comment puis-je attendre la réponse? Ou où puis-je ajouter un rappel? P>
Flashcards.controller('CardDeckDetailController', function($scope, $routeParams, CardDeckService, CardService) { $scope.carddeck = CardDeckService.findCardDeckByID($routeParams.cardDeckID); $scope.cards = CardService.findCardsByCardDeckID($routeParams.cardDeckID); $scope.card = $scope.cards[0]; $scope.cardLength = $scope.cards.length; }); Flashcards.factory('CardDeckService', function($resource) { var cardDeckService = $resource('/FlashcardsServer/rest/carddecks/:cardDeckID', {}, {}); cardDeckService.findAllCardDecks = function() { return cardDeckService.query(); }; cardDeckService.findCardDeckByID = function(id) { return cardDeckService.get({ cardDeckID : id }); }; return cardDeckService; });
3 Réponses :
Vous pouvez récupérer la promesse en accédant à la valeur. $ alors (doit aller au code source pour le constater): EDIT: Retournez ensuite la réponse HTTP P > p>
Salut Guillaume. Merci pour l'idée. Mais cela ne fonctionne pas. Je reçois le message "Impossible d'appeler la méthode '$ alors" de non défini "
On dirait que vous avez un bug dans vos cachoires, il ne peut pas être indéfini, $ ressource retourner un objet et hydrate le quand il a une réponse
Ou vous avez orthographié la propriété dans la ligne que vous appelez donc
J'ai les lignes suivantes: Service: CardDeckService.FindallAllCardDecks = Fonction () {Retour carteDeckService.Query (); }; Contrôleur: $ portée.CardDecks = CardDeckService.FindallLallCardDecks (); $ portée.carddecks. $ alors (fonction (CardDecks) {alerte ('TET'); cartes de retour [0];}); Sans la partie $, toutes les cartes de CardDecks apparaissent à la vue sans exception. Sinon, je reçois le message: "L'objet n'a pas de méthode '$ alors'" ...
Quelle version d'Angularjs utilisez-vous? $ alors a été commis récemment (1.1.3)
Salut Guillaume. J'ai utilisé 1.0.5. Avec 1.1.4 cela fonctionne mieux. Mais si j'essaie d'imprimer l'objet, je ne reçois pas le tableau de cartes que je m'attendais ... Ce qui suit me donne [objet d'objet] mais si j'essaie de le gérer comme un tableau (cartes de retour [0]) Je reçois "indéfini" ... $ étendue.card.card = $ périmètre.cards.Cards. $ Ensuite (fonction (cartes) {alerte (cartes); cartes de retour [0];});
Ok j'ai mal interprété la source, essayez mon code édité, espérons que cela fera le travail;)
Super. Ça fonctionne maintenant. Quel est le nom dans l'en-tête de la fonction? Je veux dire, cela fait-il une différence si je mets $ alors (fonction (xyz) .. ou $ alors (fonction (cartes) ...? Quel est l'objet derrière cela? Ou que puis-je l'utiliser? Ou?
L'argument passé à la Callback $ alors la réponse HTTP: l'objet de réponse a ces propriétés: DATA - {String | Objet} - Le corps de réponse transformé avec les fonctions de transformation. Statut - {Numéro} - code d'état HTTP de la réponse. Headers - {Fonction ([HeaderName])} - Fonction Getter d'en-tête. Config-{Object} - L'objet de configuration utilisé pour générer la demande. Doc: docs.angularjs.org/api/ng.$http
N'oubliez pas d'accepter la réponse si cela résoudra votre problème
Merci beaucoup, Guillaume. Tu m'as beaucoup aidé. Passez une bonne soirée.
Pas de problème, heureux d'avoir pu aider
Comme Lucuma suggère, cela peut probablement être traité avec une promesse. http://api.jquerery.com/promise/ pour la promesse de jQuery http://docs.angularjs.org/api/ng.eq le la promesse angulaire est basée sur la promesse de jQuery
Cette réponse a une solution similaire à plusieurs requêtes à compléter Angularjs - Attendez que plusieurs demandes de ressources complètent P >
donc au lieu de p> utiliser p> au cas où vous n'avez pas utilisé de promesses, ils sont un meilleur moyen Pour faire "rappels" p> Il est mentionné de $ dans un checkin GitHubin, mais je n'ai rien vu sur le site de la documentation angulaire. Peut-être qu'il est maintenant inclus pour gérer des promesses p> p>
Salut Anton. Merci de votre aide. Alors, comment puis-je ensuite accéder au résultat sur le contrôleur de cette façon? Je voudrais implémenter le rappel dans le contrôleur et le transmettre au service comme param.
J'ai eu le même problème ces derniers jours et je l'ai résolu de cette façon: Vous retournez d'abord un objet vide (mais pas quelque chose qui est "non défini"). Lorsque l'appel de la DB termine ANGULARJS met automatiquement mis à jour automatiquement l'objet Le problème, faites votre chemin, est que le torteturn code>. Aussi votre vue (si elle est liée au contrôleur) sera mise à jour. P>
FindCardDeckById code> renvoie un
non défini code > valeur. Donc,
$ Scope.card code> est indéfini et il ne sera pas mis à jour automatiquement. De plus, votre vue ne sera donc pas mise à jour. p> p>
Dupliqué possible de JS angulaires: Comment se lier aux promesses
@Lucama: avec le service $ ressources c'est un problème différent
Vous pouvez toujours retourner des promesses avec une ressource bien qu'elle soit un peu différente. Voici un exemple: Beta.plnkr.co/edit/zxgdn3erp2yabyileDay?p=preview " a>