无法弄清楚$ http.get中发生了什么 - Angular

时间:2017-03-16 21:26:17

标签: angularjs

我是 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;
     }


我的data/classifieds.json文件中有data

我的问题是,data中引用的classifieds.data究竟是什么?

  • classifieds.data代表什么?
  • 它包含哪些信息?
  • 我们分配给$scope.classifieds的结果是什么?

2 个答案:

答案 0 :(得分:2)

$ http返回一个promise,它是一个异步调用,angular使用一个名为Q for promise的库的fork,你可以在这里看到$ q文档:https://docs.angularjs.org/api/ng/service/ $ q。 当promise得到满足时,这意味着异步调用完成,.then方法调用成功或错误回调,具体取决于异步调用的结果。

  

.then(successCallback,[errorCallback],[notifyCallback]) - 无论如何   如果承诺已经或将要解决或拒绝,那么电话   一个成功或错误回调一次异步   结果可用。使用单个参数调用回调:   结果或拒绝原因。另外,通知回调可以   被称为零次或多次以提供进度指示   承诺得到解决或拒绝。

传递给成功回调的参数是一个对象,其中包含有关请求响应的信息。 data属性包含响应的主体,换句话说,data/classifieds.json文件的所有内容(在您的情况下),因此,$scope.classifieds将包含{{1}返回的json }}

这是一篇关于promises和$ q的友好文章:http://www.dwmkerr.com/promises-in-angularjs-the-definitive-guide/

答案 1 :(得分:1)

来自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
     }
相关问题