49

我不确定这是否与 AngularJS 有任何关系,是否仅与 JSON 相关。

无论如何,让我们说我们有以下 JSON:

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

现在,我使用 ng-repeat 指令来打印上面的内容,如下所示:

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

我期望在<div></div>标签中打印“姓名”和“性别”。也就是说,我希望打印 JSON 的密钥。我不知道键是什么,因为它们可能是任何东西。我怎样才能做到这一点?

4

4 回答 4

100

正如文档所述:

(key, value) in expression – 其中 key 和 value 可以是任何用户定义的标识符,而 expression 是提供要枚举的集合的范围表达式。

<div ng-repeat="(key, data) in dataSets">
  {{key}}
</div>
于 2013-03-20T14:13:36.807 回答
11

用于从AngularJs中的控制器内部访问Json键值对。

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

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

}
于 2015-10-14T08:34:16.423 回答
4

如果 dataSets 是一个数组而不是一个对象,您首先需要对数组项进行 ng-repeat,然后是键或值。

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

只是我的 2 美分。

于 2015-04-23T13:44:41.970 回答
2

对于 dataSets 中的每个 dataSet,打印键,然后遍历各个项目:

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

{{dataset}} 也可以一次性显示,数组将显示为逗号分隔的值列表。

于 2016-06-29T12:48:48.140 回答