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

我不明白何时使用Angular over jquery来获取ajax请求。

例如,我为什么要使用:

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; } }); } 

??

我的理解是,有一些原因首先是首选的:

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

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