Angularjs作用域长度函数外部

Angularjs作用域长度函数外部,angularjs,angularjs-scope,angularjs-controller,Angularjs,Angularjs Scope,Angularjs Controller,我是AngularJs的新手,不知道如何获得函数外的响应长度 var onUsers = function(response){ $scope.users = response.data; console.log($scope.users.length); //here works } 但当我尝试外部操作时 console.log($scope.users.length); 我犯了一个错误 我认为问题在于您试图在服务器返回响应之前

我是AngularJs的新手,不知道如何获得函数外的响应长度

  var onUsers = function(response){               
  $scope.users = response.data;      
  console.log($scope.users.length);  //here works
  }
但当我尝试外部操作时

 console.log($scope.users.length);

我犯了一个错误

我认为问题在于您试图在服务器返回响应之前访问$scope.users.length。所以$scope.users仍然没有定义。这是异步javascript的一个经典问题,您需要为此使用承诺。 这意味着您应该在promise回调中编写在onuser外部执行的代码


阅读本文:$q

我认为问题在于,您试图在服务器返回响应之前访问$scope.users.length。所以$scope.users仍然没有定义。这是异步javascript的一个经典问题,您需要为此使用承诺。 这意味着您应该在promise回调中编写在onuser外部执行的代码


阅读以下内容:$q

因为angular代码是异步运行的,所以
console.log($scope.users.length)
在承诺返回之前运行

var onUsers = function(response){               
      $scope.users = response.data;      
      console.log($scope.users.length);  //here works
      }
上述函数中的
console.log($scope.users.length)
可以正常工作,因为它是一个成功的处理程序。 通过使用
$timeout
,您可以在成功处理程序的一侧获得your console.log works。我想在5000年后你的回答会是正确的

  $timeout(function() {
    console.log($scope.users.length);
  }, 5000);

由于angular代码是异步运行的,所以
console.log($scope.users.length)
在承诺返回之前运行

var onUsers = function(response){               
      $scope.users = response.data;      
      console.log($scope.users.length);  //here works
      }
上述函数中的
console.log($scope.users.length)
可以正常工作,因为它是一个成功的处理程序。 通过使用
$timeout
,您可以在成功处理程序的一侧获得your console.log works。我想在5000年后你的回答会是正确的

  $timeout(function() {
    console.log($scope.users.length);
  }, 5000);

您可以使用$scope.$watch在变量更改时运行函数

$scope.$watch('users', function(users) {
    console.log(users.length);
});

您可以使用$scope.$watch在变量更改时运行函数

$scope.$watch('users', function(users) {
    console.log(users.length);
});

您是否通过
console.log($scope.users)
获得任何信息?在分配
响应.数据之前,您正在访问
$scope.users
$http
正在返回承诺,因此您需要在承诺解决后访问数据。@peteb是的,这是解决方案,谢谢@Konkko我不能用那行代码获取任何数据。你用
console.log($scope.users)
获取任何数据吗?在分配
响应.data之前,你正在访问
$scope.users
$http
正在返回承诺,因此您需要在承诺解决后访问数据。@peteb是的,这是解决方案,谢谢@Konkko我无法用这句话获取任何数据是的,我试图在回应之前获取数据。谢谢您的详细解释!是的,我试着在回应之前得到答案。谢谢您的详细解释!谢谢你的回答,我会考虑的。谢谢你的回答,我会考虑的。