angular.forEach()不起作用

时间:2016-06-19 17:16:52

标签: angularjs service foreach

嗨,朋友我是初级角色并因使用>>> import os >>> os.stat("b").st_ino 95905 >>> os.lstat("b").st_ino 96990 功能而陷入困境。我只想从angular.forEach()文件中的嵌套数组调用数据。请检查下面的代码...... data.json

HTML

****I want to call data from --users-- key****

当前代码出现问题

  

在浏览器中运行我的代码时我只在<div class="user-container" ng-controller="users"> <ul class="list"> <li ng-repeat="(key, value) in items"> {{key}} <p> {{value}} </li> </ul> </div> 中向<li>提供ng-repeat,然后在{{Key}}中,我在第一个0中获得<li>和第二1

中的<li>      

并在{{value}}我在第一个<li>和第二个<li>获取整个用户列表,他们没有数据

data.json

{
    "data": {
        "new": true,
        "show_page": false,
        "status": "signedin",
        "users": [{
            "Michele": {
                "logo": "xyz.jpg",
                "status": "active",
                "active_since": 2015,
                "order": 1
            },
            "Gerry": {
                "logo": "xyz.jpg",
                "status": "active",
                "active_since": 2015,
                "order": 1
            }
}]
    },
    "success": true
}

Controller.js

var myApp = angular.module('app', []);

myApp.service('userData', ['$http', function($http){
  return{
    userslist : function(){
        return $http({'url' : 'data.json', 'method' : 'GET'}).then(function(response){
        return response.data;
      }, function(data){
        console.log(data)
      })
    }
  }
}]);

myApp.controller('users', ['$scope', '$http', 'userData', function($scope, $http, userData){
  userData.userslist().then(function(data){
    //var provideDataKey = Object.keys(data.users)[0];
    $scope.items = [];
    angular.forEach(data, function(item){
                   //console.log(item.users);
                   $scope.items.push(item.users)
               })
    console.log($scope.items)
  })
}]);

2 个答案:

答案 0 :(得分:1)

response是HTTP响应,包含正文(数据),标题等

所以response.data是正文,如下所示:

{
    "data": {
        "new": true,
        "show_page": false,
        "status": "signedin",
        "users": [{
            "Michele": {
                "logo": "xyz.jpg",
                "status": "active",
                "active_since": 2015,
                "order": 1
            },
            "Gerry": {
                "logo": "xyz.jpg",
                "status": "active",
                "active_since": 2015,
                "order": 1
            }
        }]
    },
    "success": true
}

您想要访问此正文的users字段的data字段。所以你想要的是

userData.userslist().then(function(data){
    $scope.items = data.data.users;
    console.log($scope.items)
})

$范围。 items是一个数组,而不是一个对象。您想要显示此数组的元素。所以语法是:

       {{user}}    

您的JSON很糟糕,因为每个用户都是一个具有单个字段的对象,您无法知道该字段的名称。你最好把它改成

 "users": [
    {
         "name": "Michele",
         "logo": "xyz.jpg",
         "status": "active",
         "active_since": 2015,
         "order": 1
    },
    {
        "name": "Gerry",
        "logo": "xyz.jpg",
        "status": "active",
        "active_since": 2015,
        "order": 1
    }
]

你可以这样做:

<li ng-repeat="user in items">
   {{ user.name }}, active since {{ user.active_since }}.

答案 1 :(得分:0)

使用此

myApp.controller('users', ['$scope', '$http', 'userData', function($scope, $http, userData){
  userData.userslist().then(function(data){
    //var provideDataKey = Object.keys(data.users)[0];
    $scope.items = [];
    angular.forEach(data.users[0], function(item){
                   $scope.items.push(item);
               })
    console.log($scope.items)
  })
}]);

你是在迭代数据而不是用户。