如何使用angular JS访问JSON中的嵌套对象

时间:2015-09-28 16:02:20

标签: javascript json angularjs pug

这是我的JSON数据的格式:

[

 {

 "Department_id": "34",

 "Names": [

     "Jack Jones",

     "Matt Jones",

     "Lynn Lewis"

  ],

  "Employee-num": 3,

  "Salary-info": {

      "Jack Jones": 1000,

      "Matt Jones": 2920,

      "Lynn Lewis": 1500

    },

 },

]

你如何得到"薪水 - 信息"?并显示如下:

Jack Jones: 1000

Matt Jones: 2920

Lynn Lewis: 1500

在玉器上,我尝试使用

访问它
p(ng-repeat='details in info.salary-info') {{ details }}

但是它没有工作,它只显示一个" 0"屏幕上。

info.Department_id适用于显示34的部门ID。

问题解决了。

为什么没有显示的问题是因为对象名称上存在连字符。

您需要使用'来访问此类对象。 ["带有连字符"]',

的对象的名称

喜欢:{{info [" salary-info"]}}

而不是{{info.salary-info}}。

希望它可以帮助任何有同样问题的人。

3 个答案:

答案 0 :(得分:3)

您可以从对象中获取键和值:

$('.approve').click().delay(1000);

https://docs.angularjs.org/api/ng/directive/ngRepeat#iterating-over-object-properties

答案 1 :(得分:2)

对象的ngRepeat语法为(k, v) in obj - 您可以这样做:

p(ng-repeat='(name, salary) in info.salary-info') {{ name }} : {{salary}}

答案 2 :(得分:2)

问题是Salary-info中的连字符。 有关演示,请参阅此plunker

的index.html

<!-- Jack Jones: 1000 Matt Jones: 2920 Lynn Lewis: 1500 -->
<p ng-repeat="name in details.Names">
  {{name}}: {{details['Salary-info'][name]}}
</p> <!-- works -->

or

<p ng-repeat="(name, salary) in details['Salary-info']">
  {{name}}: {{salary}}
</p> <!-- works-->

or

<p ng-repeat="(name, salary) in details2.SalaryInfo">
  {{name}}: {{salary}}
</p> <!-- works -->

一切正常,但

<p ng-repeat="(name, salary) in details.Salary-info">
  {{name}}: {{salary}}
</p> <!-- fails!-->

失败。

数据

app.js

app.controller('MainCtrl', function($scope) {
  $scope.details =
      ...
        "Salary-info": {"Jack Jones": 1000, "Matt Jones": 2920, "Lynn Lewis": 1500},
      ...

  $scope.details2 =
      ...
      "SalaryInfo": {"Jack Jones": 1000, "Matt Jones": 2920, "Lynn Lewis": 1500},
      ...