2014-09-24 1 views
0

다음은 응답을 나타내는 코드이지만 $scope.dateWiseData 배열에 저장할 응답을 설정할 수없는 코드입니다. 내가 뭘 잘못하고 있는지 알려줘.

$scope.dateWiseData = []; 
var tmpArr = []; 
var x = 0; 
for (var i=0; i< 7;i++) { 
    $http.post('/api/getdata', {_id: currentUser._id, data: data}).then(function(response){ 
     console.log(response.data); 
     tmpArr.push(response); 
     if (x < 7) { 
      $scope.dateWiseData = tmpArr; 
     } 
     x++; 
    }); 
} 
console.log("--Week Data Array--"); 
console.log($scope.dateWiseData); 
+0

나는 당신의 경우에 6 개의 약속을 만들고 대신 $ q.all을 사용합니다. 게시 한 내용은 문제가 없지만 언제 문제가 끝났다고 말할 수 있습니까? –

답변

1

당신이 $scope.dateWiseData 배열 데이터가 서버에서 점점 전에 인쇄 의미있는 데이터에 할당하기 전에이 실행됩니다 console.log($scope.dateWiseData); 인쇄하려고합니다. 하지만 http가 완료된 후에는 데이터가 해당 배열에 지정되어야합니다. 이 및

같은 루프 이
$scope.getData().then(function() { 
    // processing 
}); 

** 망가 ** 컨트롤러에 매개 변수로 $ q를 추가하는 것을 잊지 것을 자바 스크립트에서 약속

$scope.getData() = function(){ 
    var deferred = $q.defer(); 
    for (var i=0; i< 7;i++) { 
     $http.post('/api/dayavailability', {_id: SessionService.currentUser._id, weekDay: new Date($scope.sevenWeekDayArr[i]).toISOString()}).then(function(response){ 
      tmpArr = response.data; 
      if (x < 7) { 
       $scope.dateWiseData.push(tmpArr); 
      } 
      if(x==6) { 
       deferred.resolve(); 
      } 
      x++; 
     }); 
    } 
    return deferred.promise; 
} 

wrapt를 확인해야

+0

코드가 정확한 것을 의미합니까 ?? – Trialcoder

+0

예'{{dateWiseData}}'보기에서 이것을 사용하면 페이지의 값을 인쇄 할 수 있습니다 –

+0

오케이 .. 데이터가 뷰에 채워지지만 나중에 '$ scope.dateWiseData'를 사용해야 할 경우 어떻게해야합니까? 컨트롤러, 어떻게해야합니까? – Trialcoder

관련 문제