2016-05-23 65 views
0

我有一個角度控制器應該從數據庫獲取產品,然後對它們執行一些操作。控制器有一個功能,其中有另一個功能。我怎樣才能將從嵌套功能收到的數據返回給控制器?我嘗試過幾乎所有我能想到的事情,似乎沒有任何工作。如何從控制器中的嵌套函數返回數據

search.controller('SearchResultsController', function($scope, $routeParams, $http){ 

    $scope.getAllProducts = function(){  //function 1 

    var config = { 
     method: "GET", 
     url: '/products', 
     headers: {"Content-Type": "application/json;charset=utf-8"} 
    }; 

    $http(config).then(function(response) { //function 2 
     $scope.allProducts = response.data; 
     console.log($scope.allProducts) // correctly prints products fetched from server 
    }); 

$scope.getAllProducts(); 
console.log($scope.allProducts); //prints undefined 

}; 
}; 
+0

所以你想同步調用異步方法?你不能。遵守承諾。 – Casey

+0

您可以使用$ q異步運行函數,並在完成處理時返回值(或例外)。 – nutboltu

回答

0

你的函數很可能工作,但它是一個異步函數調用,所以它在下一行執行之前還沒有完成。我建議您考慮重構此代碼以使用服務,但根據您目前的代碼結構,在啓動控制器時需要執行的任何操作都應該在調用$ http的函數中進行。