angular.forEach et objets
Le Problème:
Je suis en train de faire (ce que je pense, mais peut-être n'est pas) un simple angular.forEach
sur un tableau puis à l'aide de $resource
pour faire un appel en fonction de chaque valeur renvoyée. Le résultat de chaque appel est un objet, que je suis attendu. Mais, je ne peux pas obtenir ces objets à joindre harmonieusement dans la façon dont les angulaire.forEach documentation montre.
Mais d'abord, un peu de code qui fonctionne et ensuite un coup d'oeil au code échec.
Œuvres:
var uniqueIds = {};
angular.forEach(object, function(key, value){
this.push(key.uniqueIds);
}, uniqueIds);
console.log(uniqueIds)
//uniqueIds equals the expected array
Échoue
Voici où les choses deviennent difficiles. Maintenant, dans l'exemple suivant, à l'intérieur de la angular.forEach
est un $resource
appel.
angular.forEach(array, function(index){
Resource.query({id:index}, function(result){
console.log(result)
//returns the expected object,
//but, as expected, I can't access the object outside the async call
});
console.log(result);
//result is undefined
});
Compte tenu de la async-ness, il semble une promesse pourrait résoudre le problème. Mais il n'est pas--je suis vraiment encore à l'intérieur de l'appel asynchrone. Ni l'attribution result
à $scope
travail. En bref, je n'arrive pas à obtenir une valeur en dehors de la Resource.query
.
Que Dois-Je Arriver?
J'ai besoin de l'objet renvoyé de chaque $resource
appel à un objet (à l'aide angulaire.- elle s'étendre? J'ai essayé) de la même manière le angular.forEach
créé un tableau. J'ai essayé beaucoup de différentes approches, la plupart de tous, basées sur les réponses générale async questions posées ici, mais jusqu'à présent sans succès. Je suis certain que c'est un problème avec l'obtention de la valeur de la $resource
appel, mais comment faire, dans ce cas, je suis un peu perplexe.
source d'informationauteur jody tate | 2014-01-27
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela?
Angulaire la documentation a très bon exemple de ce
.query
retourne un tableau de référence qui est rempli avec des données lorsque le xhr est terminé.Depuis, probablement
id
est un identifiant unique, la requête retourne un tableau avec un seul élément, c'est pourquoi je vous suggère d'utiliser.get
à la place.De toute façon, si vous avez encore l'intention de l'utiliser
.query
vous pouvez faire quelque chose comme:Comme vous pouvez le voir, le code a l'air assez mauvais...
Afin d'obtenir de meilleurs résultats, vous pouvez utiliser:
Encore mieux si vous laissez AngularJS pour faire le
$watch
par l'affectation deobjects
à un$scope
propriété.