我是AngularJs的新手,并不知道如何在功能之外获得响应的长度。
var onUsers = function(response){
$scope.users = response.data;
console.log($scope.users.length); //here works
}
但是当我在外面尝试使用功能时
console.log($scope.users.length);
我收到错误。
答案 0 :(得分:1)
我认为问题是您在从服务器返回响应之前尝试访问$ scope.users.length。所以$ scope.users仍未定义。这是异步javascript的经典问题,你需要使用promises。 这意味着您应该在promise回调中编写您在onUsers外部执行的代码。
答案 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);