Angularjs范围长度函数外

时间:2016-03-22 21:11:41

标签: 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);

我收到错误。

3 个答案:

答案 0 :(得分:1)

我认为问题是您在从服务器返回响应之前尝试访问$ scope.users.length。所以$ scope.users仍未定义。这是异步javascript的经典问题,你需要使用promises。 这意味着您应该在promise回调中编写您在onUsers外部执行的代码。

阅读本文:https://docs.angularjs.org/api/ng/service/ $ q

答案 1 :(得分:1)

你可以使用$ scope。$ watch在变量变化时运行一个函数。

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

答案 2 :(得分:0)

AS角度代码异步运行,因此console.log($scope.users.length)在promise返回之前运行。

var onUsers = function(response){               
      $scope.users = response.data;      
      console.log($scope.users.length);  //here works
      }

上述函数中的console.log($scope.users.length)有效,因为它是成功处理程序。 您可以使用$timeout获取您的console.log在成功处理程序旁边运行。我假设5000后您的回复将会到来。

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