无法从 Angular JS 中的 $resource.query() 访问数据

Cant Access data out of $resource.query() in Angular JS

我正在使用$resource的查询函数如下

resource.query(function(details){
    $scope.details=details;
    console.log($scope.details);

})
console.log($scope.details);

在上面的代码中,第一个 console.log 正在打印准确的数据。但第二个显示未定义。 控制台输出如下。

angular.js:10661 XHR finished loading: GET "http://localhost:9000/app/myLeaveApplication/myLeaveApplication.html". 

myLeaveApplicationController.js:10 undefined

angular.js:10661 XHR finished loading: GET "http://localhost:9000/assets/data/data.json"

myLeaveApplicationController.js:7 
[Resource, Resource, Resource, $promise: Promise, $resolved: true]

所以有人请帮助我知道为什么会这样吗?

这是因为resource.query是一个异步方法,所以第10行在回调函数之前执行,而且还是undefined。然后,一旦查询完成,它就会调用回调,并且 $scope.details 现在已经有了数据,所以这是预期的行为。这是初学 JS 的程序员常犯的困惑。

这是因为resource.query是异步方法所以console.log($scope.details);行执行 在将详细信息分配给 $scope.details

之前

您可以尝试以下解决方案:

resource.query(function(details){
    $scope.details=details;
    console.log($scope.details);

});

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