2016-04-25 8 views
-1

に異なる要求からのデータを持つ配列を作成し、すべての最初の、私のコードですが、私は最初の要求をした:ここangularjs

 $scope.displayuser = function(id){ 
      var token = "xxxxx"; 
      userdisplay 
       .send(token,id) 
       .then(function(data){ 
        console.log(data); 
        $scope.userbyorga = data.users; 
        $scope.numtickets = []; 
        for(i = 0; i < data.users.length; i++){ 
         var userid = data.users; 
         $scope.numtickets[userid.id] = {nbuser:data.users[i].name}; 
         var userarray = JSON.stringify(userid); 
         localStorage.setItem("myid",userarray); 
        } 
        console.log($scope.numtickets); 
       }) 

私たちが覚えておく必要があることである:私は押し込むよ $scope.numtickets[userid.id] = {nbuser:data.users[i].name}; 私の配列は私のユーザー名とユーザー

のIDを維持するには、その後、私はちょうどあなたを示したコードに合わせて、ここで第2の要求を作っ:

   .then(function(){ 
        var tabuser = JSON.parse(localStorage.getItem("myid")); 
        console.log(tabuser); 
        var urls = []; 

        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(tabuser[i].id); 
         console.log($scope.numtickets[tabuser[i].id]); 
         displayfilter 
          .user(token,tabuser[i].id) 
          .then(function(data){ 

           $scope.numtickets[tabuser[i].id]['nbticket'] = data.tickets.length; 
           console.log($scope.numtickets); 
           console.log(data.tickets.length); 

          }) 
         console.log(tabuser[i]); 
        } 
       }) 

     }; 
私は私のユーザーのために使用したのと同じ配列でチケットと関連付けるの数をプッシュしてい

$scope.numtickets[tabuser[i].id]['nbticket'] = data.tickets.length; 

そして、私たちはここで覚えておく必要がこれです。

私の問題:

は、この行にある:

$scope.numtickets[tabuser[i].id]['nbticket'] = data.tickets.length; 

"$ scope.numtickets [tabuser [I] .ID]が定義されていません。" それではうまくいきません。誰かが私を助けることができますpls?

私が最後にこのような何か希望:ここにすべてある

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


console.log($scope.numtickets[userid.id]); 

enter image description here

{ 
    1: { 
     'nbuser': 'User name1', 
     'nbticket': '1', 
     }, 
    2: { 
     'nbuser': 'User name2', 
     'nbticket': '2', 
    } 
    3: { 
     'nbuser': 'User name3', 
     'nbticket': '2', 
     } 
} 

をし、次のように私の見解では、これを表示するには簡単だろうdata.usersのjson: enter image description here

+0

userid.idの値を表示できますか? –

+0

私の更新を参照してください:) – xenurs

+0

それはコンテンツフォームのdata.usersですか?私はユーザーのIDプロパティを求めています。 –

答えて

1
for(i = 0; i < tabuser.length; i++){ 
     var currentI = i; 
     displayfilter 
      .user(token,tabuser[i].id) 
      .then(function(data){ 
       $scope.numtickets[tabuser[currentI].id]['nbticket'] = data.tickets.length; 
    }) 
} 

私は何をしましたか? forのローカルcurrentI変数にiを格納しました。これは、それぞれのcurrentI変数がthen関数のコールバックに対してローカルになるため、機能します。そうでなければ、私はtabuser.lengthの値を持ちます。これはclosureのためです。あなたのための各繰り返しでは、その時のための新しいコールバック関数を再作成します。しかし、彼らは同じ閉鎖を持つでしょう。共通ではない唯一のクロージャのレベルは、forループで宣言されたすべての変数になります。

$q.allでも見てみると、約束事をまとめることができ、一緒にすべてを処理して簡単にすることができます。

注:これは重複していますか?私はずっと前にすでにこれに答えてきたと確信していました...

関連する問題