我应该使用哪种方法来手动引导我的AngularJS?
我看到以下几点:
angular.bootstrap(document, ['TodoApp']); angular.bootstrap(angular.element("body")[0], ['TodoApp']);
另外AngularJS文档提到了这个我不是很了解。
angular.element(document).ready(function() { angular.bootstrap(document); });
这些方法有什么区别? 特别是Angular文档的最后一个方法是什么? 一个比另一个更好用吗?
他们大致相同,有一些不同之处:
angular.bootstrap(document, ['TodoApp']);
这将工作,如果你有你的脚本加载在页面的结尾 (而不是在标题)。
否则,在引导应用程序的时候不会加载DOM(不会有任何要编译的模板,这些指令不会有任何影响)。
这个工程: plnkr
这个不是: plnkr
angular.bootstrap(angular.element("body")[0], ['TodoApp']);
与以前一样,使用body
作为应用程序的根。 它使用了jqLite中没有的select器,所以你需要在应用程序中包含完整的jQuery 。
我不确定使用body
替代document
有什么好处,但可能与e2etesting有关 ,如本评论中所述
plknr
angular.element(document).ready(function() { angular.bootstrap(document); });
这个实际上是等待DOM被加载的,所以即使你在头文件中包含了你的脚本,它也可以工作。
这与jQuery的$(document).ready(
基本相同,但是使用jqLite
的angular.element
。
在最后一个例子中,没有模块被传递到引导函数,很可能你需要声明你的主模块,除非你的应用只包含在全局命名空间的控制器上。
所以最后一个选项将如下所示,以便与其他两个类似:
angular.element(document).ready(function() { angular.bootstrap(document, ['TodoApp']); });
plknr
我想大多数时候最安全的赌注是使用最后一种方法。