2017-03-16 115 views
0

我是一個新手Angular JS。我指的是在線教程,並且遇到了$ http服務。

(function() { 
    "use strict"; 

    angular 
     .module("ngClassifieds") // referring module which is already created 
     .controller("classifiedsCtrl", function ($scope, $http) { 

      $http.get('data/classifieds.json') 
       .then(function(classifieds){ 
        $scope.classifieds = classifieds.data; 

       }) 
     }); 
})(); 

在這一段代碼,我無法弄清楚這些行。 誰能解釋這裏發生了什麼?

$http.get('data/classifieds.json') 
    .then(function(classifieds){ 
     $scope.classifieds = classifieds.data; 
    } 


我有這個datadata/classifieds.json文件。

我的問題是,classifieds.data中提到的data究竟是什麼?

  • classifieds.data代表什麼?
  • 它包含什麼信息?
  • 我們分配給$scope.classifieds的結果是什麼?
+0

的可能重複[我怎樣返回來自異步調用的響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Igor

+0

閱讀教程的好工作,這是一個開始... 1)請參閱[$ http文檔](https://docs.angularjs.org/api/ng/service/$http)它的權利在頂部與大膽的字母。2)你是否轉到你在複製/粘貼鏈接和代碼中引用的文件'data/classifieds.json'? (*它有助於閱讀你複製/粘貼,打開它,看看裏面有什麼*)。 3)該變量現在引用了在回調中收到的返回數據。 – Igor

回答

2

$ HTTP返回一個承諾,這是一個異步調用,角使用一個名爲Q代表承諾圖書館的一個分支,可以看到$ Q文件位置:https://docs.angularjs.org/api/ng/service/ $ Q。 當承諾完成時,意味着異步調用已完成,.then方法根據異步調用的結果調用成功或錯誤回調。

。於是(successCallback,[errorCallback],[notifyCallback]) - 無論 時的承諾是或將得到解決或拒絕,然後異步儘快 調用成功或錯誤回調 一個結果可用。回調函數只有一個參數: 結果或拒絕原因。此外,在 該承諾已解決或被拒絕之前,通知回調可能被稱爲零次或多次以提供進度指示。

傳遞給成功回調函數的參數是一個包含請求響應信息的對象。 data屬性包含響應的主體,換句話說,data/classifieds.json文件的所有內容(在你的情況下),因此,$scope.classifieds將包含由data/classifieds.json返回的json。

這裏有關的承諾和$ Q友好的文章:http://www.dwmkerr.com/promises-in-angularjs-the-definitive-guide/

1

簡單的GET請求例如從AngularJS Docs.

$http({ 
    method: 'GET', 
    url: '/someUrl' 
}).then(function successCallback(response) { 
    // this callback will be called asynchronously 
    // when the response is available 
    }, function errorCallback(response) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    }); 

在你的代碼,

$http.get('data/classifieds.json') // This is the URI of your json file 
    .then(function(classifieds){ // Success callback 
     $scope.classifieds = classifieds.data; // Here, you are assigning response's data into $scope.classifieds 
    } 
相關問題