为什么ng-app不是ng-module
Why ng-app not ng-module?
我知道ng-app在AngularJS中初始化一个模块,如下所示:
var app = angular.module('myApp', []);
<html ng-app="myApp">
但是当我向刚接触 AngularJS 的人教这个或观看视频时,教师不可避免地会摸索应用程序和模块之间术语的不一致。 AngularJS作为一个框架经过深思熟虑,我很惊讶它没有改变为:
var app = angular.app('myApp', []);
<html ng-app="myApp">
或
var app = angular.module('myModule', []);
<html ng-module="myModule">
有没有人关注这个项目足够长的时间,以了解框架这一部分的历史?
我不认为克雷格在问ng-app
做什么或它是如何工作的。
我想他是在问为什么创造棱角分明的人会ng-app
该指令。他们为什么不把它命名为ng-module
. ng-module
会更容易理解。
例如,ng-controller
应该命名一个控制器,ng-module
应该命名一个模块。创建它们的angular
方法被命名为module()
和controller()
,没有称为"app"的方法或实体。
我倾向于同意克雷格的观点。也就是说,如果我去推测他们为什么命名它ng-app
我会认为这是因为您的 HTML 中只允许有一个 ng-app
指令。如果您希望将多个模块与HTML页面相关联,则可以以编程方式执行此操作。
因此,ng-app
更像是使用模块引导HTML的实用程序,它不是将模块与HTML相关联的通用方法。
如果您查看文档,这就是它的建议:
使用此指令自动引导 AngularJS 应用程序。这 ngApp 指令指定应用程序的根元素,并且 通常放置在页面的根元素附近 - 例如,在 或标记。
每个 HTML 只能自动引导一个 AngularJS 应用程序 公文。在文档中找到的第一个 ngApp 将用于定义 要作为应用程序自动引导的根元素。运行多个 HTML 文档中的应用程序,您必须手动引导它们 改用 angular.bootstrap。AngularJS 应用程序不能 相互嵌套。
http://docs.angularjs.org/api/ng/directive/ngApp
综上所述,如果你想要一个ng-module
指令,你总是可以编写自己的指令来包装angular.bootstrap()
函数。你可以在我写的一篇关于它的博客文章中找到有关如何执行此操作的更多详细信息和代码:AngularJS:使用 ngModule 绕过 ngApp 限制
ng-app
的意思是:该页面包含Angular!
ng-app="module"
的意思是:该页面包含 Angular,并且该模块中定义了必要的控件/服务/等。
>ng-app
定义应用程序的main
或bootstrap
模块,该模块应执行应用程序的初始化任务。在某些情况下,您可能希望在运行时决定哪个应该是应用程序的主模块。就像在java中一样,你有很多方法和类,但你定义一个main
方法作为起点。同样,在 angular 中,您有许多模块,但是,您将一个模块定义为应用程序的起点。
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- ng选项-传递键而不是值
- 隐藏元素直到加载完成(ng斗篷不是我需要的)
- 如果我使用 src 而不是 ng-src,角度如何仍然渲染图像
- ng-show内容在页面加载过程中闪烁,尽管它不是真实的,并且ng-cloak不适用于FF
- 将ng模型设置为与变量同名,而不是引用该变量
- 错误:[ng:areq]参数'CompanyCtrl'不是函数,未定义
- 断言var集通过<输入ng模型>不是未定义的
- 第一页加载时,有角度的ng网格固定标题不是静态的
- AngularJS'ng:areq错误参数"{controller}不是函数“;,CodeIgnite
- 为什么不是't ng表将数据从数组填充到表中
- ng disabled不是禁用Angular JS中的按钮
- 为什么ng-app不是ng-module
- 跳过 ng-repeat(不是 ng-if)中的项目
- AngularJS错误ng-areq不是函数
- angularjs ng如果不是空的,重复ng
- node . js.错误:module不是一个函数
- AngularJS & lt; select>.选项上的' ng-click '不是工作
- TypeError: module不是一个函数茉莉花
- AngularJS: ng-options "不是顶端