103

我最近查看了一个使用 angular 构建的 webapp 的代码,发现它是使用ng-app="myModule"放置在<body>标签上的指令编写的。在学习 Angular 时,我只见过它在<html>标签上使用过,正如 angular docs herehere和他们的教程中所推荐的那样。

我自己对此进行了一些探索,发现了一些问题,尤其是这个问题和类似的这个问题,它们讨论了为一个页面加载多个模块。但是,这种技术与我的情况不同,因为它涉及将 ng-app 放置在主体的元素上,并使用手动引导同时运行两个 Angular 应用程序。

据我所知,使用ng-appon<html><body>. 据我了解,它指定了角度应用程序的根,因此将ng-app其放置在角度范围之外,但我想不出这会影响事物的任何主要方式。所以我的问题是:放置在其中一个标签而不是另一个标签上的技术区别是什么?<body><head>ng-app

4

3 回答 3

144

你放的地方没什么大的区别ng-app

如果你把它放在上面,<body>那么你有一个更小的 AngularJS 范围,它会稍微快一些。

但我已经使用ng-app.<html><title>

于 2013-04-03T14:42:30.257 回答
21

我在一个开发旧版应用程序的团队中,发现最好在 div 中使用 ng-app 标签,该标签用作包装器,将新代码与旧版代码隔离开来。

我们在开发严重依赖 jqGrid 和 Dojo 的应用程序时发现了这一点。

当我们将 ng-app 添加到 head 标签时,它会炸毁网站,但是当我们使用包装器时,我们可以毫无问题地使用 Angular。

于 2013-09-03T11:38:41.193 回答
4

AngularJS 将引导它找到的第一个 ng-app!就是这样。如果你有多个 ng-app,它只会处理第一个。如果要引导任何其他元素,请使用 angular.bootstrap()

ng-app 属性的值是使用以下命令创建的模块:

angular.module("module_name", [])

一个模块定义了 Angular 如何引导,因为我们没有与其他编程语言不同的 main() 方法。如果 ng-app 的值为空,则默认使用默认模块 'ng'。

据说速度稍微快一些,因为 Angular 将处理 ng-app 所在元素内的所有元素。但我有点怀疑,因为除非你有一个非常庞大的 DOM,否则这种差异几乎不会被察觉。

如果你想要这里的例子:http: //noypi-linux.blogspot.com/2014/07/angularjs-tutorials-understanding.html

于 2014-08-18T11:56:48.507 回答