如何从控制器中的嵌套函数返回数据

时间:2016-05-23 14:42:12

标签: javascript angularjs node.js

我有一个角度控制器,它应该从数据库中获取产品,然后对它们执行一些操作。控制器具有一个功能,其中包含另一个功能。如何将从嵌套函数接收的数据返回给控制器?我几乎尝试了所有我能想到的东西,但似乎没有任何工作。

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

};
};

1 个答案:

答案 0 :(得分:0)

您的函数最有可能正常工作,但它是一个异步函数调用,因此在下一行执行之前尚未完成。我建议您考虑重构此代码以使用服务,但根据您当前的代码结构,您在控制器启动时需要执行的操作应该在调用$ http时使用then函数。