2016-05-31 4 views
0

"スレッド"と "コメント"をバインドします。サーバー側のデータを持つng-repeatの角度ネストされたもの

  • スレッド1
    • コメント1
    • コメント2
    • コメント3
  • スレッド2
    • コメント1
    • コメント2
  • Iは「スレッドをフェッチする必要がスレッド3
    • コメント1件の
    • コメント2
    • コメント3
    • コメント4
    • コメント5

"と"コメント "サービスごとにデータベースから。スレッドサービスはすべてのスレッドのデータを提供し、「コメント」サービスはスレッドIDを受け取り、渡されたスレッドIDコメントのみを返します。

したがって、上記のネストされたリストのようなデータをトウの別のサービスでバインドする方法。

app.controller('ThreadCtrl', function ($scope, $http, $location) { 
 
    $scope.Threads = []; 
 
    $scope.Comments = []; 
 

 
    $http({ 
 
     method: 'POST', 
 
     url: 'api/ThreadList' 
 
    }).success(function (data) { 
 
     $scope.Threads = JSON.parse(data); 
 
    }); 
 
    
 
    $http({ 
 
     method: 'POST', 
 
     url: 'api/CommentList', 
 
     data: JSON.stringify({ ThreadID: 0 }) //The problem is, ThreadID will resolve at runtime 
 
    }).success(function (data) { 
 
     $scope.Threads = JSON.parse(data); 
 
    }); 
 
})

+0

を(私はあなたのサービスがJSONを返すと仮定)の両方のサービスが返すもの私はあなたの仕事であなたを助けることができるかもしれません –

+0

私はあなたが両方の要求からのデータを$ scope.Threadsに保存していることに気付きました、私はseccond one shou $ scope.Commentsに保存されます。 –

+0

私の意見では、スレッドオブジェクトの内部にオブジェクトのネストされたコメント配列が必要になるため、バックエンドから必要なフォーマットを処理する必要があります。フロントエンドでの処理はお勧めしません –

答えて

1

あなたthreadsコールのsuccessハンドラ内でサーバーからのコメント取得:あなたがサンプルJSONを提供してください可能性がある場合

app.controller('ThreadCtrl', function ($scope, $http, $location) { 
    $scope.Threads = []; 
    $scope.Comments = []; 

    $http({ 
     method: 'POST', 
     url: 'api/ThreadList' 
    }).success(function (data) { 
     $scope.Threads = JSON.parse(data); 

     // iterate over the threads here (this is where they are available already) and fetch the comments by IDs... 

     var thread = ...; 

     $http({ 
      method: 'POST', 
      url: 'api/CommentList', 
      data: JSON.stringify({ ThreadID: thread.id }) 
     }).success(function (data) { 
      thread.comments = JSON.parse(data); 
     }); 
    }); 
}) 
関連する問題