自己附加两个ng-repeat

时间:2016-04-22 14:14:36

标签: angularjs ng-repeat

这是我的isssue,我有两个不同的循环,这些循环中的每一个都来自不同的http请求。这是我所拥有的屏幕:

enter image description here

而我想要的是,吼叫" claire pagniez"我想要" 1",吼叫" Michel Polnaref"我想要3,bellow" mathilde zimmer"我想" 1"。

现在每个整数都是反复写的,我不想要那个,我希望它们贬低好的元素。

这是我的代码:

在我看来:

<ul ng-repeat="user in userbyorga track by $index">{{user.name}}<li ng-repeat="item in numtickets track by $index">{{item}}</li></ul>

在我的控制器中:

这里我用来显示我的整数(票数),我需要2个请求才能显示一个元素:

 $scope.displayuser = function(id){
            var token = "xxxxxxx";
            userdisplay
                .send(token,id)
                .then(function(data){
                    console.log(data);
                    $scope.userbyorga = data.users;
                    console.log(data.users);
                    for(i = 0; i < data.users.length; i++){

                        var userid = data.users;


                       var userarray = JSON.stringify(userid);
                        localStorage.setItem("myid",userarray);
                    }
                })
                .then(function(){
                    var tabuser = JSON.parse(localStorage.getItem("myid"));
                    console.log(tabuser);
                    var urls = [];
                    $scope.numtickets = [];

                    for(i = 0; i < tabuser.length; i++){



                         urls.push({
                             url:JSON.stringify("https://cubber.zendesk.com/api/v2/users/"+tabuser[i].id+"/tickets/requested.json")

                         });


                        console.log(urls);

                        displayfilter
                            .user(token,tabuser[i].id)
                            .then(function(data){


                                $scope.numtickets.push(data.tickets.length);

                                console.log($scope.numtickets);





                            })
                    }

                })

        };

请求我在我的控制器中执行以显示这些名称的请求:

 $scope.displaycompany = function(){
            var token = "xxxxxxx";
            dropdown.send(token).then(function (data) {

                $scope.usertab = data.organizations;
                console.log($scope.usertab);


            });

        }

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点。首先是服务器端:有一个请求返回正确的数据集。

我将专注于客户端,因为它是客户端问题。我建议你创建一个包含用户和值的列表:

 var tabuser = JSON.parse(localStorage.getItem("myid"));
     console.log(tabuser);
     var urls = [];
     $scope.data = [];
     for(i = 0; i < tabuser.length; i++){
                  var currentUser = tabuser[i];// defining a variable in the scope of the callback function tabuser[i] just won't work as expected in the .then
                  displayfilter
                        .user(token,tabuser[i].id)
                        .then(function(data){
                            $scope.data.push({user:currentUser}, nbTickets:data.tickets.length});

                            console.log($scope.data);
                        })
                }

            })

现在你可以迭代整个事情:

<ul ng-repeat="wrapper in data track by $index">{{wrapper.user.name}}<li ng-repeat="item in wrapper.nbTickets track by $index">{{item}}</li></ul>

但是,我不确定是否需要进行第二次重复。

如果这不符合您的需要,请检查$q.all()文档,您可以等待一堆承诺并将所有结果合并在一起并合并它们并重新格式化数据以满足您的需求。