2016-05-23 66 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的函数中进行。