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

for*_*yez 2 javascript ajax jquery angularjs

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

例如,我为什么要使用:

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

代替

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

??

Dan*_*iel 9

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

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

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

  • `$ http`还在Angular上下文中运行`success`和`error`回调,因此您不需要手动触发摘要周期. (2认同)