如何在angular JS中打印范围之外的值

时间:2017-07-31 05:37:22

标签: angularjs hybrid-mobile-app

$ scope.compdata值是在函数内打印。但不是在外面的功能。

 $scope.compdata="";
    $scope.fetchCompanies = function() {
      Company.get({
        arg1 : 'list',
        arg2 : 14
      }, function(success) {
      //  console.log(success);
        $scope.compdata = success.data;
       console.log($scope.compdata);
      });
    };

  $scope.fetchCompanies();   //

    console.log("outside : ",  ?);

2 个答案:

答案 0 :(得分:1)

您需要了解Promise如何在JavaScript中运行。我假设Company.get是一个AJAX调用,并且因为AJAX调用是异步的,所以在调用之后打印结果将不起作用。

相反,您可以尝试这种方法:

$scope.compdata = "";

$scope.fetchCompanies = function() {
  return Company.get({ // Notice this line
    arg1 : 'list',
    arg2 : 14
  }, function(success) {
    $scope.compdata = success.data;
    console.log($scope.compdata);
    return Promise.resolve(success.data); // and this line
  }).$promise; // and this line
};

$scope.fetchCompanies()
  .then(function(data) { // and this block
    console.log("outside : ",  data);
  });

上面的代码从函数中返回promise本身,以便您可以提供.then()并对响应执行某些操作。希望有所帮助。

答案 1 :(得分:0)

您需要使用$ q服务:

$scope.compdata = "";

$scope.fetchCompanies = function() {
 var deferred = $q.defer();
 Company.get({
    arg1 : 'list',
    arg2 : 14
  }, function(success) {
    $scope.compdata = success.data;
    console.log($scope.compdata);
    deferred.resolve(success.data); //Edited here
  });
  return deferred.promise;
};

$scope.fetchCompanies()
  .then(function(data) { // and this block
    $scope.compdata = data; //Added
    console.log("outside : ",  $scope.compdata);
  });

在控制器中注入$ q作为DI