Angularjs作用域长度函数外部
我是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); 我犯了一个错误 我认为问题在于您试图在服务器返回响应之前
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我无法用这句话获取任何数据是的,我试图在回应之前获取数据。谢谢您的详细解释!是的,我试着在回应之前得到答案。谢谢您的详细解释!谢谢你的回答,我会考虑的。谢谢你的回答,我会考虑的。