当前位置: 首页 > 面试题库 >

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

昌博易
2023-03-14
问题内容

我不明白何时对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返回一个与其他区域相似的“承诺”,这表示.success和.done与angular一致。jQuery也允许类似,但是语法略有不同。
  • $ http成功和错误回调将在angular内部执行。如果使用jQuery,则可能有必要调用$ apply,这在某些情况下可能很棘手。
  • $ http可以不使用jQuery。因此,如果没有其他理由要包含jQuery,则可以使用$ http节省几千美元。
  • $ http较短。主观的,但就我个人而言,它对我来说更好。

除了这些之外,您通常应该能够执行任何一项操作。



 类似资料:
  • 问题内容: 目前使用jQuery,当我需要在发生点击时做一些事情时,我会像这样… 我正在看别人在项目上有的代码,他们这样做是… 请注意,就我所知,它似乎在做相同的事情,除了它们使用的是live()函数(现在已弃用并且jQuery文档说要使用live()函数),但是无论哪种方式,为什么要使用live / on()而不是我的第一个示例? 问题答案: 因为您可能具有动态生成的元素(例如,来自AJAX调用

  • 我碰巧知道,在下面的表达式中,使用将导致无限流,将始终为0。我之所以困惑是因为我认为返回的值没有被使用,即便如此,它也不应该中断之后的增量。

  • 很多人问了此问题,说bzero已经被posix-2008废弃,为何还使用bzero。选择bzero而不是memset,有2个原因: bzero有2个参数,指针和长度,很明确就是将制定size的内存初始化为0。而memset有3个参数,需要记忆参数的位置,有不少人经常把长度和初始化值搞错。 bzero比memset的可读性要好。memset可以制定初始化的值,实际上绝大多数情况都是0。 一旦新版本g

  • 问题内容: 我不确定他们已经进行了多长时间,但是我只是注意到Google 在他们的搜索网址中使用 # 而不是 搜索? 。 新方法 http://www.google.com/#q=stackoverflow 旧方法 http://www.google.com/search?q=stackoverflow 井号/井号通常用作页面部分的锚点。 除了较短的网址,对Google有什么好处?它似乎违背了搜索

  • 我看到一些教程建议在Kotlin中使用val而不是var。我相信val在Java中就像常量,对吗?那么,如果建议使用它而不是var,我们如何更改它的值? 更新:例如:为什么我要使用val而不是var声明类成员(变量或字段)?而在Java中,它就像:

  • 问题内容: 我不确定为什么列出项目时为什么需要使用ul-li而不是简单地使用div。我可以使两者看起来完全一样,因此与创建div相比,创建无序列表的功能优势在哪里? 问题答案: 为了语义正确。HTML具有表达事物列表的功能,它可以帮助Google机器人,屏幕阅读器以及所有不仅仅关心网站外观的用户更好地了解您的内容。