2014-09-24 78 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。你发布的内容看起来不错,但问题是你什么时候能够告诉它已经完成了? – 2014-09-24 06:26:52

回答

1

,如果你尝试打印console.log($scope.dateWiseData);$scope.dateWiseData阵列被分配给数据,这意味着该数据从服务器获取之前将显示此将执行。但是http完成后应该将数据分配给该数组。您需要检查JavaScript中的承诺

$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; 
} 

缠住了,对于这样的 和

环 ​​

**不要忘记加$ Q作为参数控制器**

+0

这意味着代码是正确的? – Trialcoder 2014-09-24 06:31:22

+0

是'{{dateWiseData}}'在视图中使用它,你可以打印页面上的值 – 2014-09-24 06:32:04

+0

ok ..数据在视图中填充,但如果我需要在我的后面使用'$ scope.dateWiseData'控制器,我该怎么做? – Trialcoder 2014-09-24 06:36:01

相关问题