首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular无名ng-app

Angular无名ng-app
EN

Stack Overflow用户
提问于 2015-09-24 11:06:40
回答 3查看 127关注 0票数 4

<body ng-app>是如何使用的,为什么要使用?我们如何将控制器、指令等分配给这个未命名的模块。还要解释一下这与手动引导Angular App有什么关系。Fiddle

EN

回答 3

Stack Overflow用户

发布于 2015-09-24 11:17:40

这实际上是三个独立的问题,但我很高兴解决每一个问题。

  • 如何使用以及为什么使用?

除非有一个应用程序的入口点,否则Angular不会也不能正确地引导应用程序。根据documentation,如果没有传递命名应用程序实例的参数,angular将尝试通过爬行DOM并使用遇到的第一个ngApp指令实例来auto-bootstrap应用程序。

我们通常希望将我们的入口点放在<body>元素上,以包含我们需要的所有潜在的DOM,而不是用<head>元素弄乱它,比如加载脚本和css。也就是说,如果要自动引导应用程序,推荐的位置是HTML元素。

  • 如何将控制器、指令等分配给此未命名的模块?

模块、控制器等必须附加到某些东西上,以便Angular能够正确地拿起它们并与它们交互。

一旦应用程序启动,Angular将开始解析DOM,查找指令。如果您有一个应用程序实例(您确实有),您的控制器将自动添加到该实例中。如果您查看bootstrap文档-> Automatic Initialization,您将发现以下内容:

Angular在DOMContentLoaded事件时自动初始化,或者在angular.js脚本被评估时自动初始化(如果当时document.readyState被设置为“完成”)。此时,Angular查找指定应用程序根目录的ng-app指令。如果找到ng-app指令,则Angular将:

  • 加载与指令关联的模块。app创建application
  • injector编译DOM,将ng-
  • 指令作为编译的根。这允许您告诉它只将DOM的一部分视为角度application.

  • 这把小提琴到底是怎么工作的?

这实际上是烟幕和镜子,真的不应该计入:)。如果您查看JSFiddle的网络流量,您会发现实际上正在加载AngularJS。因此,您的插值实际上被自动绑定到JSFiddle Angular实例,而不是您自己提供(或者在本例中没有提供)、解析并随后作为2呈现到DOM中的实例。

票数 3
EN

Stack Overflow用户

发布于 2015-09-24 11:16:08

每个angularjs.org:

“ngApp指令指定应用程序的根元素,通常放置在页面的根元素附近-例如,在或标记上。”

换句话说,ng-app使您的html成为一个Angular应用程序,从而能够在您的代码中使用{{ }}。这些括号能够执行操作,这就是为什么你能够计算1 +1。然而,如果你要使用变量,你需要将一个ng-controller附加到容器div并初始化一个控制器。

票数 1
EN

Stack Overflow用户

发布于 2015-09-24 11:32:43

它相当于ng-app=""。但是,您需要一个命名空间来附加控制器、指令。等等。Angular可以在没有名称空间的情况下插入{{ 1 + 1 }},但是您不能将任何内容绑定到视图范围。有趣的是,ng-app=" "是一个可以绑定的名称空间。

https://jsfiddle.net/n3hygcnd/3/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32752655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档