2

我不明白何时使用 Angular 而不是 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;
                    }
    });
   }

??

4

1 回答 1

9

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

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

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

于 2013-09-03T16:07:02.277 回答