【问题标题】:How to display response data ($http) from server in AngularJS如何在 AngularJS 中显示来自服务器的响应数据($http)
【发布时间】:2016-05-19 15:00:45
【问题描述】:

如何在 AngularJS 中显示来自服务器的响应数据(获取)

在我的代码中,我需要在该控制器内提醒 $scope.orders 但它不会显示..

function OrderController($scope,$http)
{
    var orderPromise = $http.get("../api/order");

    orderPromise.success(function(data, status, headers, config) 
    {
        $scope.orders=data
        alert(JSON.stringify($scope.orders))  // First alert 
    });

    orderPromise.error(function(data, status, headers, config) 
    {
        alert("Error");

    });

    alert(JSON.stringify($scope.orders))    // Second alert 
}

我如何在成功 fun() 之外访问 $scope.orders 在这里,我两次提醒 $scope.data 在这里显示第一个警报 但是第二次警报没有说明为什么? 如何显示第二个?

【问题讨论】:

  • 第一个警报有效但第二个无效的原因是因为第一个警报的执行被延迟到成功履行承诺...这可能需要几毫秒到几秒,具体取决于要求。但是,第二个几乎在控制器实例化后立即执行,因为它在定义承诺处理程序之后立即运行(未执行)。你到底想用这些数据做什么?如果你只是想显示它,那么在你的视图中绑定 $scope.orders,它会在 promise 解析后自动显示。

标签: angularjs scope angularjs-http


【解决方案1】:

第二个警报不会显示,因为当您发出警报时,$scope.orders 中没有任何内容。这就是异步调用的本质,只有当你进入成功/错误部分时,你才会有一些东西(或者没有......)。

在服务器返回您的响应并触发 success/error 函数之前,该变量仍未填充,因为 $scope.orders=data 尚未运行。

您应该阅读docs 了解更多信息,并更深入地了解 Promise 的工作原理。

【讨论】:

  • AOmri 我如何才能第二次访问这些 $scope.orders 任何解决方案...Thnakyou.I am 初学者考虑我
  • @symonkt1 你不能,因为我提到的原因。只有内在的成功。
  • 哦,好的 Omri 我明白了,我阅读了文档,谢谢您的 cmets..还有一件事我可以把它推到工厂并回调到同一个控制器吗?
  • @symonkt1 是的,甚至更喜欢。
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 2012-10-06
  • 1970-01-01
  • 2016-02-05
  • 2017-09-16
相关资源
最近更新 更多