Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在Angular中使用$http而不是jquery';那是阿贾克斯?_Javascript_Jquery_Ajax_Angularjs - Fatal编程技术网

Javascript 为什么在Angular中使用$http而不是jquery';那是阿贾克斯?

Javascript 为什么在Angular中使用$http而不是jquery';那是阿贾克斯?,javascript,jquery,ajax,angularjs,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",

我不明白什么时候在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;
                    }
    });
   }

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

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

不过,除此之外,你一般都应该能够做到这两个方面。

你可以阅读它,它会给你一些提示,让你自己回答这个问题;)也许如果你不使用jQuery?我不明白为什么我会有缺点。我不是在操纵DOM。我在问为什么angular有自己版本的ajax调用?仅此而已。@foreyez angular有自己版本的ajax调用,因为angularjs不需要jQuery来运行,因此如果不使用jQuery,您仍然可以使用angularjs的ajax方法轻松发送跨浏览器ajax请求。我明白了,我猜人们对同时包含jquery和angular都很敏感,因为jquery意味着dom操作。我总是在我的页面中包含jquery..更短
$.get('/url')。然后(success)
$http
也会在角度上下文中运行
success
error
回调,因此您不需要手动触发摘要循环。@JosephSilber不是OP所拥有的,但它会很短。不过,jQuery也没有类似的put和delete快捷方式,这让我很恼火。我喜欢get/put/post/delete的一致性,它们都同样简洁。但是就像我说的,主观的…第一个是应该意识到必须使用$http而不是jquery。