2014-07-07 2 views
0

je le contrôleur suivant:Comment traiter la réponse JSON dans angulaire

function EntryCtrl($scope, Restangular){ 
console.log("*** EntryCtrl"); 
$scope.roles= Restangular.all("roles").getList(); 
console.log("*** EntryCtrl: " + JSON.stringify($scope.roles)); 
} 

La sortie de la console est:

*** EntryCtrl: {"restangularCollection":true} 

Lorsque j'utilise un plugin navigateur de repos pour faire le même appel de repos, Je reçois:

[ 
{ 
    "name": "dev" 
} 
] 

Je ne peux pas comprendre comment obtenir angulaire pour traiter la réponse même que le plug-in du navigateur de repos. Mon but ultime est d'obtenir le nom de rôle, "dev", dans Angular. Sur une page angulaire, je veux utiliser "ng-show" sur un lien en utilisant le nom du rôle, comme celui-ci:

<a href="" ng-show="roles.contains('')>Foo</a> 

Répondre

0

Essayez avec

$scope.roles= Restangular.all("roles").getList().$object; 

de la doc

GET to/accounts Retourne un tableau vide par défaut. Une fois qu'une valeur est renvoyée par le serveur , ce tableau est rempli avec ces valeurs. Vous pouvez donc l'utiliser dans votre modèle

$scope.accounts = Restangular.all('accounts').getList().$object; 
0

Selon le doc:

Restangular utilise des promesses. Au lieu de faire le remplissage « magique » d'objets comme ressource $

Donc, pour obtenir la réponse du serveur, vous devez utiliser .alors rappel comme ceci:

Restangular.all("roles").getList().then(function(response){ 
    $scope.roles = response; 
}); 

Et dans votre modèle:

<li ng-repeat="role in roles">{{role.name}}</li> 
Questions connexes