Angularjs 函数外的作用域长度
Angularjs scope length outside function
我是 AngularJs 的新手,并不知道如何在函数外获取响应长度。
var onUsers = function(response){
$scope.users = response.data;
console.log($scope.users.length); //here works
}
但是当我在 onUsers 函数之外尝试时
console.log($scope.users.length);
我收到一个错误。
我认为问题在于您试图在服务器返回响应之前访问 $scope.users.length。所以 $scope.users 仍未定义。这是异步 javascript 的经典问题,您需要为此使用 promises。
这意味着您应该在 promise 回调中编写在 onUsers 之外执行的代码。
因为 angular 代码异步运行,所以 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);
您可以使用 $scope.$watch 作为 运行 变量变化时的函数。
$scope.$watch('users', function(users) {
console.log(users.length);
});
我是 AngularJs 的新手,并不知道如何在函数外获取响应长度。
var onUsers = function(response){
$scope.users = response.data;
console.log($scope.users.length); //here works
}
但是当我在 onUsers 函数之外尝试时
console.log($scope.users.length);
我收到一个错误。
我认为问题在于您试图在服务器返回响应之前访问 $scope.users.length。所以 $scope.users 仍未定义。这是异步 javascript 的经典问题,您需要为此使用 promises。 这意味着您应该在 promise 回调中编写在 onUsers 之外执行的代码。
因为 angular 代码异步运行,所以 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);
您可以使用 $scope.$watch 作为 运行 变量变化时的函数。
$scope.$watch('users', function(users) {
console.log(users.length);
});