【问题标题】:Cant Access data out of $resource.query() in Angular JS在 Angular JS 中无法访问 $resource.query() 中的数据
【发布时间】:2016-05-18 15:00:55
【问题描述】:

我正在使用$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]

那么请任何人帮助我知道为什么会发生这种情况?

【问题讨论】:

标签: angularjs angular-resource


【解决方案1】:

这是因为resource.query是一个异步方法,所以第10行是在回调函数之前执行的,它仍然是未定义的。然后,一旦查询完成,它就会调用回调并且 $scope.details 现在已经有了数据,所以这是一个预期的行为。对于刚接触 JS 的程序员来说,这是一个常见的困惑。

【讨论】:

  • 足够常见,有一个规范的StackOverflow question and answer,因此您可以投票关闭作为副本而不是重复相同的答案
  • 谢谢先生的帮助。我编辑了我的代码并得到了答案。我只需要使用变量调用查询方法。
【解决方案2】:

这是因为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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多