web-dev-qa-db-fra.com

AngularJS: Comment obtenir la clé d'un objet JSON

Je ne sais pas si cela a quelque chose à voir avec AngularJS et si c'est uniquement lié à JSON.

Quoi qu'il en soit, disons que nous avons le JSON suivant:

$scope.dataSets = {
    "names": ["Horace", "Slughorn", "Severus", "Snape"],
    "genders": ["Male", "Female"]
}

Maintenant, j'utilise la directive ng-repeat pour imprimer ce qui précède comme suit:

<div ng-repeat="data in dataSets>
    //Continue readig to know what I am expcting here
</div>

Ce à quoi je m'attends dans le <div></div> tags est à imprimer "nom" et "genres". Autrement dit, je souhaite imprimer les clés du JSON. Je n'ai aucune idée de ce que sont les clés, car elles pourraient être n'importe quoi. Comment puis-je faire ceci?

48
callmekatootie

Comme le dit la documentation:

(clé, valeur) dans l'expression - où clé et valeur peuvent être n'importe quels identificateurs définis par l'utilisateur, et expression est l'expression de portée donnant la collection à énumérer.

<div ng-repeat="(key, data) in dataSets">
  {{key}}
</div>
97
Stewie

pour accéder à Json paire clé-valeur à partir du contrôleur interne dans AngularJs.

for(var keyName in $scope.dataSets){        
     var key=keyName ;
     var value= $scope.dataSets[keyName ];

  alert(key)
  alert(JSON.stringify(value));

}
9

si dataSets est un tableau et non un objet, vous devez d'abord répéter les éléments du tableau, puis la clé ou la valeur.

<div ng-repeat="item in dataSets">
   <div ng-repeat="(key, value) in item">
   {{key}}
   {{value}}
   </div>
</div>

juste mes 2 cents.

3
edgarpetrauskas

Pour chaque dataSet dans dataSets, imprimez la clé puis parcourez les éléments individuels:

<div ng-repeat="(key, dataSet) in dataSets">
   <div>{{key}}</div>
   <div ng-repeat="value in dataSet">   
        {{value}}
   </div>
</div>

{{dataset}} peut être affiché en une fois. Le tableau serait affiché sous forme de liste de valeurs séparées par des virgules.

1
Jose Ramon Polo