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

标签 javascript jquery ajax angularjs

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

??

最佳答案

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

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

但是,除了这些之外,您通常应该能够做到其中之一。

关于javascript - 为什么在 Angular 中使用 $http 而不是 jquery 的 ajax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18596744/

相关文章:

javascript - Grunt 运行 mocha - 测试失败时中止

jQuery CSS Style a parent div when child is focused

Jquery嵌套列表折叠

php - Ajax PHP 联系表单不起作用

javascript - rubyonrails 中 ajax 发布后未定义的追加

javascript - Node.js + CoffeeScript - 模块/类混淆

javascript - Screeps - 内存中的属性重置

jquery - Rails 通过 ajax 加载选择选项

javascript - 使用纯 Javascript 滚动到可滚动 DIV 内的元素

javascript - 如何使用 JavaScript 刷新 div 内的数据表?