2016-09-09 40 views
0

設置在我的電流控制器的以下部分變量我工作:

var vm = $scope; 

/* get all teachers from database */ 
$http.get('app/php/db.php?action=get&table=data') 
    .then(function successCallback(response){ 
     vm.data  = response.data; 
     vm.totalItems = response.data.length; 
    }, function errorCallback(response){ 

    }); 

console.log(vm.data); 

控制檯說,數據是不確定的。我如何設法讀取在successCallback中設置的變量?

回答

0

你記錄它的方式,它總是undefined。因爲你的電話是asynchronous。它可能需要2ms,200ms - 不知道什麼時候你會得到服務器的響應。

您可以登錄它successCallback

$http.get('app/php/db.php?action=get&table=data') 
.then(function successCallback(response){ 
    vm.data  = response.data; 
    vm.totalItems = response.data.length; 
    console.log(vm.data); //here 
}, function errorCallback(response){ 

}); 

OR您可以在控制器內做$watch

$scope.$watch('vm.data', function(newData){ 
    console.log(newData.length); 
}); 
+0

所以我不能使用successCallback中設置的變量?例如,如果我使用vm.data.length ...稍後在控制器中它不會工作.. 使用手錶我只是得到一個「錯誤:undefined不是一個對象(評估'newData.length')」 但是vm.data肯定已設置。否則ng-repeat將不會輸出html文件中的數據。 –