Javascript 为什么在Angular中使用$http而不是jquery';那是阿贾克斯?
我不明白什么时候在ajax请求中使用Angular over 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",
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。