加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

我应该使用哪种方法手动引导我的AngularJS?

发布时间:2020-12-17 08:45:24 所属栏目:安全 来源:网络整理
导读:我看到以下: angular.bootstrap(document,['TodoApp']);angular.bootstrap(angular.element("body")[0],['TodoApp']); 还有AngularJS文档提到这,我不是真的理解。 angular.element(document).ready(function() { angular.bootstrap(document); }); 这些方
我看到以下:
angular.bootstrap(document,['TodoApp']);
angular.bootstrap(angular.element("body")[0],['TodoApp']);

还有AngularJS文档提到这,我不是真的理解。

angular.element(document).ready(function() {
     angular.bootstrap(document);
   });

这些方法有什么区别吗?特别是从Angular docs做的最后一个方法是什么?是否比其他更好使用?

它们大致相同,有一些区别:
angular.bootstrap(document,['TodoApp']);

如果你的脚本加载在页面的结尾(而不是标题),这将工作。

否则,在启动应用程序时不会加载DOM(将不会有任何模板要编译,指令将不会有任何效果)。

这一个工作:plnkr

这一个不:plnkr

angular.bootstrap(angular.element("body")[0],['TodoApp']);

和以前一样,使用body作为应用程序的根。它使用了一个在jqLit??e中不可用的选择器,因此您需要在应用程序中包含完整的jQuery。

我不知道什么是使用身体而不是文档的优势,但可能有关于e2e测试,如解释在comment

plknr

angular.element(document).ready(function() {
  angular.bootstrap(document);
});

这个实际上等待DOM被加载,所以即使你在脚本中包含你的脚本,它也会工作。

这基本上与jQuery的$(document).ready(但是使用jqLit??e的angular.element)相同。

在最后一个例子中,没有模块被传递给引导函数,很可能你需要声明你的主模块,除非你的应用程序只包含全局命名空间中的控制器。

所以最后一个选项将像下面,以便类似于其他两个:

angular.element(document).ready(function() {
  angular.bootstrap(document,['TodoApp']);
});

plknr

我猜,大多数时候最安全的赌注是使用这最后一种方法。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读