【问题标题】:Get data from json but only for one record从 json 获取数据,但只针对一条记录
【发布时间】:2016-02-18 23:56:22
【问题描述】:

我有这个 JSON:

{
  "success": true,
  "return": {
    "totalItem": 7,
    "totalPages": 1,
    "pageSize": 7,
    "items": {
      "phones": [
        "(48) 9999-9999"
      ],
      "users": {
        "manager": {
          "id_user": "5819",
          "name": "Síndico Ilhas Belas",
          "user": "sindico.teste@domain.com",
          "photo": "https://domain.amazonaws.com/files/upload/2015/07/25/5819.55b32d90e69ab3.05638898_873f970f8d259.jpg"
        },
        "employees": [
          {
            "id_user": "2",
            "name": "José Perez",
            "user": "pepe@domain.com",
            "photo": "https://.amazonaws.com/files/upload/2013/10/07/2.52523a0451c3c5.59697102_7a4188d3.jpg",
            "groups": [
              {
                "id_group": "33",
                "name": "Portaria"
              }
            ],
            "work_details": {
              "work_schedule": "8-12hs e 14-18hs",
              "work_activities": "Supervisionar os trabalhos de conservação"
            }
          },
          {
            "id_user": "15142",
            "name": "Marcos Rojas",
            "user": "rojas@c.com",
            "photo": "http://www.domain.com/themes/intra/img/sf_ele.gif",
            "groups": [
              {
                "id_group": "589",
                "name": "Zeladoria"
              }
            ],
            "work_details": {
              "work_schedule": "8h 12h",
              "work_activities": "Zeladoria"
            }
          },
          {
            "id_user": "18833",
            "name": "Portaria",
            "user": "teste@domain.com",
            "photo": "http://www.domain.com/themes/intra/img/sf_ele.gif",
            "groups": [
              {
                "id_group": "33",
                "name": "Portaria"
              }
            ],
            "work_details": {
              "work_schedule": "8hs por dia. 8-12hs e 14-18hs",
              "work_activities": "Supervisionar os trabalhos de conservação"
            }
          }
        ],
        "boardMembers": [
          {
            "id_user": "8189",
            "name": "Ana Maria",
            "user": "8189",
            "photo": "http://www.domain.com/themes/intra/img/sf_ela.gif",
            "groups": [
              {
                "id_group": "722",
                "name": "Subsíndico"
              }
            ]
          },
          {
            "id_user": "11442",
            "name": "Luciana Zath",
            "user": "lzath@mail.com",
            "photo": "http://www.domain.com/themes/intra/img/sf_ela.gif",
            "groups": [
              {
                "id_group": "1456",
                "name": "Conselho fiscal"
              }
            ]
          }
        ]
      }
    }
  }
}

因为manager只有一条记录,我无法在这段代码中用ng-repeat得到它

<div class="card" ng-repeat="(manager, name) in items">
    <pre>{{name}}</pre>
</div>

JSON 返回所有数据,但我只需要返回manager 数据,例如:

姓名、用户(电子邮件)和照片

和控制器:

// Controller of about.
appControllers.controller('aboutCtrl', function($scope, $mdBottomSheet, $mdToast, $mdDialog, About) {

    About.get(function(data) {
        $scope.items = data.return.items;
        console.log(data);
    })

}); // End of about controller.

employeesboardMembers 可以与 ng-repeat 配合使用,但对于经理来说是单一记录,而不是

【问题讨论】:

  • @ryanyuyu itemsAbout.get() 中很清楚
  • 那么问题是有时会出现managers 的数组还是总是一个对象?
  • @charlietfl 那么只有 JSON 的一部分? JSONObj.return.items?

标签: angularjs json


【解决方案1】:
appControllers.controller('aboutCtrl', function($scope, $mdBottomSheet, $mdToast,
    $mdDialog, About) {

    About.get(function(data) {
        $scope.items = data.return.items;
        $scope.manager = data.return.items.users.manager;       
        console.log(data);
    })
}); // End of about controller.

在 html 中:

 <p>{{manager.name}}</p>
 <p>{{manager.user}}</p>

【讨论】:

  • 这更容易,工作正常,谢谢:) P.S.:编辑你的代码,删除}
【解决方案2】:

如果manager 始终是单个对象,只需这样做:

 Manager: {{items.users.manager.name}}

然后重复employees数组

 <div ng-repeat="employee in items.users.employees">
    Employee:  {{employee.name}}

【讨论】:

    【解决方案3】:

    如果items 是一个数组,您只能使用ng-repeat 遍历items 的列表。在您的 JSON 中,items 是一个对象,因此您不会获得经理姓名。只需使用{{items.users.manager.name}} 获取经理姓名。另一方面,您可以使用ng-repeat 来迭代items.users.employees,因为它的employees 属性是一个数组。

    <div class="card" ng-repeat="employee in items.users.employees">
        <pre>{{employee.name}}</pre>
    </div>
    

    【讨论】:

      【解决方案4】:

      您可以使用

      访问它
      {{items.users.manager}}
      

      【讨论】:

      • 啊用户是一个大对象,我的错...我会编辑答案
      猜你喜欢
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多