Pourquoi ne angulaire $ressource ajouter des objets ($promesse, $résoudre...) à mes données de réponse?
Je retourne une ressource avec une URL
$resource("http://foo.com/bar.json").get().
$promise.then(function(data){ $scope.result = data},
function(error){ $scope.msg = "error" } );
Des ressources renvoie
["item1"...."item_n",.....,"$promise", "$resolved", "$get", "$save", "$query", "$remove", "$delete"]
Pourquoi puis-je obtenir tous les objets de mon jeu de données. Je devine $promesse retourne juste tout cela, et attend la réponse du serveur. Mais une fois que j'ai la réponse du serveur où puis-je obtenir mon serveur de données sans la Promesse jargon?
Vous devez vous connecter pour publier un commentaire.
Si vous regardez l'angle de la source ici:
https://github.com/angular/angular.js/blob/master/src/ngResource/resource.js#L505
Il y a une méthode toJSON sur la Ressource prototype de la chaîne qui va effectuer cette opération pour vous.
Par exemple:
JSON.parse(JSON.stringify(res))
a donné un bon résultat.Vous avez besoin de retourner enveloppé résultat comme {'résultat': { 'some_key': 'some_val' }} à partir de votre backend.
Ou tout simplement faire comme décrit ci-dessus.
$resource
retourne un objet ou un tableau qui aura vos données lorsque l'appel se termine. Toutes ces fonctions sont là pour vous aider et$resource
est principalement prévu pour les opérations CRUD. Si vous souhaitez que les données, vous devez attendre que ça s'est retourné de sorte que vous pourriez aussi bien utiliser de la promesse. Si vous voulez retirer toutes les propriétés que vous pouvez utiliserangulaire.la méthode toJson
pour le convertir en json, mais angulaire n'est que pour vous lors de la publication de retour à une ressource ou $http appel de sorte que vous ne devriez pas avoir à.Donc au cas où quelqu'un d'autre est achoppement ici et ne comprenaient pas les promesses/angularjs voici ce qui se passe. Lorsque vous utilisez
.then()
ou.get()
vous obtenez une promesse et des fonctions d'aide tous dans le même objet. C'est génial parce que vous n'aurez pas à vous soucier des rappels de cours de définition et de savoir si les données sont disponibles, car la promesse de l'objet a toujours certaines propriétés. Cet objet contient vos données brutes en un autre objet à l'intérieur. Ainsi, la promesse de l'objet est imbriqué, il vous suffit de référence de l'objet de données à l'intérieur lorsque les données sont prêtes.Voici ce que je faisais
promesse objet
Des données s'est fait en vertu d'un autre objet appelé "données". Donc, dans votre réussite rappel pour obtenir uniquement les données que vous devez faire dans ce cas:
data.data
data.data
, lors de l'utilisation .query() je vois $promesse $et résolu tous mélangés dans un même objet/tableau.. j'ai loupé quelque chose? Il en fait une douleur à boucle sur le résultat de plusieurs éléments lors de l'utilisation .query()get().$promise.then()
dans les dernières versions de anguleux. - Il encore de vous envoyer $promesse et $résoudre. Si vous avez besoin d'utiliser les données.la méthode toJSON(). Bien sûr, cela est dans le cas où votre serveur utilise le RESTEPour supprimer automatiquement de chaque demande, vous pouvez ajouter un intercepteur: