2016-02-09 52 views
-3

顯示響應數據($ HTTP)如何從服務器AngularJS如何從服務器AngularJS

在我的代碼

顯示效應初探數據(GET)我需要提醒控制器內部$ scope.orders但willll不節目..

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 
} 

我怎樣才能獲得$ scope.orders到成功的樂趣(外) 在這裏,我在兩次 提醒$ scope.data在這裏第一個警報顯示 但第二個警告是什麼爲什麼? 如何顯示第二個?

+1

[$ http success callback中的AngularJS:範圍問題]的可能的重複(http://stackoverflow.com/questions/25043534/angularjs-scope-issue-in-http-success-callback) – Matheno

+0

第一次警報的原因但第二個並不是因爲第一個的執行被延遲直到承諾成功完成......根據請求,這可能需要幾毫秒到幾秒的時間。然而,第二個控制器在實例化後幾乎立即執行,因爲它在promise處理程序定義(未執行)之後立即運行。你究竟想要對數據做什麼?如果你只是想顯示它,然後綁定你查看的$ scope.orders,並且它會在promise解決後自動顯示。 – GPicazo

回答

1

當警報時$scope.orders中沒有任何內容會顯示第二個警報。這就是異步調用的本質,只有當你進入成功/錯誤部分,你會有什麼(或不是)。

直到服務器返回您的響應並且success/error函數觸發,由於$scope.orders=data尚未運行,該變量仍未填充。

您應該閱讀docs瞭解更多信息,並對承諾的工作原理有所瞭解。

+0

AOmri我怎麼能訪問這些$ scope.orders第二次任何解決方案... Thnakyou.I初學者認爲我 –

+0

@ symonkt1你不能,從我提到的原因。只有在成功。 –

+0

哦好的Omri我知道了,我讀了文檔Thankyou爲您的意見..我可以推這更多的東西到工廠和回調到相同的控制器? –