Javascript 如何管理角度中的循环?

Javascript 如何管理角度中的循环?,javascript,arrays,angularjs,for-loop,Javascript,Arrays,Angularjs,For Loop,我是一个有角度的新手,我试图循环遍历数组中的每个对象,为新数组中的每个对象创建一个用户行,请参见下面的场景 在下面的示例中,我只想获得_user_id来为每个用户创建新行 [{id: 1, to_user_id: 5, from_user_id: 4}, {id: 2, to_user_id: 6, from_user_id: 4}] 下面是我的服务,我知道我必须将它包装在for循环中,并将对象推到一个新数组中,我只是不知道如何用角度表示它 UserService.GetUserById(to

我是一个有角度的新手,我试图循环遍历数组中的每个对象,为新数组中的每个对象创建一个用户行,请参见下面的场景

在下面的示例中,我只想获得_user_id来为每个用户创建新行

[{id: 1, to_user_id: 5, from_user_id: 4},
{id: 2, to_user_id: 6, from_user_id: 4}]
下面是我的服务,我知道我必须将它包装在for循环中,并将对象推到一个新数组中,我只是不知道如何用角度表示它

UserService.GetUserById(to_user_id)
        .success(function (data) {

          }).
        error(function(error, status) {
          alert(status);
          console.log(error);         
      });
    });

使用anuglar foreach loog示例:

    $scope.newvalues = []; 
    angular.forEach(values, function(value) {
$scope.newvalues.push(values.to_user_id)
};

根据需要多次运行服务。使用array.push方法将新用户推送到阵列中。然后在html中使用ng repeat来显示它们,就像使用IIFE闭包一样

$scope.users = [];

for (var =i; i<maxValues; i++) {
    (function call(i)
    UserService.GetUserById(to_user_id)
        .success(function(data) {
            $scope.users.push(data);
    }))(i); 
}

虽然在循环中运行对服务器的多个请求不是一个好主意,但是您可以通过使用承诺来控制所有请求的状态,从而使其更加方便

考虑以下示例,说明如何使用从服务调用检索的附加to_user属性来扩充原始用户数组:

$scope.users = [
    {id: 1, to_user_id: 5, from_user_id: 4},
    {id: 2, to_user_id: 6, from_user_id: 4}
];

$q.all($scope.users.map(function(user) {
    return UserService.GetUserById(user.to_user_id).success(function(data) {
        user.to_user = data;
    });
}))
.then(function() {
    // all users are resolved successfully
})
.catch(function (error, status) {
    // at least one request failed
    alert(status);
    console.log(error);
});

演示:

您返回的数据是一个数组,因此您可以在其上循环:

$scope.users = [];

myService.getData().then(function(data){
    angular.forEach(data, function(user){
        getUser(user.to_user_id);
    });
});

function getUser(id) {
    UserService.GetUserById(id)
        .success(function (data) {
            $scope.users.push(data);
        }).error(function(error, status) {
            alert(status);
            console.log(error);         
        });
    });
}
然后迭代您范围内的用户:

<ul>
    <li ng-repeat="user in users">{{ user.name }}</li>
</ul>

您是否通过多次调用GetUserById来填充数组?是的,这正是我试图在@svaro中执行的操作,您希望在html中显示它吗?您应该获得所有用户,因为如果您不知道您的数据库保存了多少用户,您就不知道应该迭代数据库多少次loop@svarog我可以控制要循环通过的数组中返回的数量。。。所以基本上我会在新的数组中重复。。后端开发人员不希望在第一个数组中返回to_用户名。。我必须通过idyeah将每个用户的行都发送到_用户的行的原因我得到了必须运行服务x次的部分,我只是不知道如何将其包装在循环语句中
<ul>
    <li ng-repeat="user in users">{{ user.name }}</li>
</ul>