为什么在Angular中使用$ http而不是jquery的ajax?

时间:2013-09-03 16:03:13

标签: javascript jquery ajax angularjs

我不明白何时对Ajax请求使用Angular over jquery。

例如,我为什么要使用:

function ItemListCtrl ($scope, $http) {
    $http.get('example.com/items').success(function (data) {
    $scope.items = data;
  }
}

而不是

  function ItemListCtrl ($scope) {
        $.ajax({type: "GET", url: 'example.com/items',
        success: function (result) {                    
                             $scope.items = data;
                    }
    });
   }

...

1 个答案:

答案 0 :(得分:9)

我的理解是,首选是首选的原因有几个:

  • $ http是可测试的。它实际上可以存根它使用的后端并测试$ http请求而不用实际发送请求。
  • $ http会为您做一些常见的“事情”,例如在POST请求中为您设置内容类型为“application / json”。
  • $ http返回类似于angular中其他区域的“promise”,表示.success,.done与angular一致。 jquery也允许类似,但语法略有不同。
  • $ http成功和错误回调将在angular内执行。如果你使用jQuery,那么可能需要调用$ apply,这在某些情况下可能会很棘手。
  • $ http无需jQuery即可运行。因此,如果你没有其他理由包含jQuery,你可以使用$ http节省几个k。
  • $ http更短。主观,但就个人而言,它对我来说更好。

除此之外,您通常应该能够做到。