首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在angular JS中自举是什么意思?

在angular JS中自举是什么意思?
EN

Stack Overflow用户
提问于 2014-01-11 11:31:02
回答 7查看 60.2K关注 0票数 63

我是Angular JS的初学者。我正在浏览下面的链接。http://docs.angularjs.org/tutorial/step_00

引导程序文件是什么?它们位于何处?

什么是自动引导和引导的手动初始化?我读到了手动初始化的缺点如下。从链接http://docs.angularjs.org/guide/bootstrap

有人能确切地解释一下这里的缺点是什么吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-09-06 13:39:08

尽管上面的每个人都回答得很好,我也找到了我想要的东西,但仍然缺少一个有效的例子。

在理解AngularJS中的自动/手动引导时,下面的示例会有很大帮助:

AngularJS :自动引导:

在发生DOMContentLoaded事件时,或者当angular.js脚本下载到浏览器并将document.readyState设置为完成时,Angular会自动初始化/引导。此时,AngularJS查找ng-app指令。当找到ng-app指令时,Angular将:

从ng-

  • 根元素开始加载与应用程序injector.

  • Compile DOM相关的模块。

这个过程被称为自动引导。

代码语言:javascript
复制
<html>

    <body ng-app="myApp">
        <div ng-controller="Ctrl">Hello {{msg}}!</div>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
        <script>
            var app = angular.module('myApp', []);
            app.controller('Ctrl', function($scope) {
                $scope.msg = 'Nik';
            });
        </script>
    </body>

</html>

JSFiddle:http://jsfiddle.net/nikdtu/ohrjjqws/

AngularJS -手动引导:

您可以使用angular.bootstrap()函数手动初始化您的angular应用程序。此函数将模块作为参数,应在angular.element(document).ready()函数中调用。当DOM准备好操作时,将触发angular.element(文档).ready()函数。

代码语言:javascript
复制
<html>

    <body>
        <div ng-controller="Ctrl">Hello {{msg}}!</div>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
        <script>
            var app = angular.module('myApp', []);
            app.controller('Ctrl', function($scope) {
                $scope.msg = 'Nik';
            }); 
            //manual bootstrap process 
            angular.element(document).ready(function () { angular.bootstrap(document, ['myApp']); });
        </script>
    </body>

</html>

JSFiddle:http://jsfiddle.net/nikdtu/umcq4wq7/

备注:

  1. 手动引导应用程序时不应使用ng-app指令。
  2. 不应混淆自动引导应用程序和手动引导应用程序的方式。
  3. 在手动引导应用程序之前定义模块、控制器、服务等。

参考: http://www.dotnettricks.com/books/angularjs/interview

票数 32
EN

Stack Overflow用户

发布于 2014-01-11 11:36:55

引导相当于初始化或启动您的Angular应用程序。有两种主要的方法可以做到这一点。

第一种是通过将ng-app添加到HTML中的an元素来自动引导,如下所示:

代码语言:javascript
复制
<html ng-app="myApp">
...
</html>

第二种方法是在通过angular.module("myApp", []);创建应用程序后从JavaScript引导,如下所示

代码语言:javascript
复制
angular.bootstrap(document, ['myApp']);
票数 53
EN

Stack Overflow用户

发布于 2014-06-08 07:44:42

补充Dave Swersky的答案(我是Angular的新手,如果我错了,请纠正我):

下图取自angularjs.org bootstrap tutorial。解释了戴夫所说的。

超文本标记语言在带有ng-app指令的元素中,由AngularJS编译。例如:

代码语言:javascript
复制
<body>
    <div> {{ 1 + 2 }} </div>
</body>

将呈现为:

代码语言:javascript
复制
{{ 1 + 2 }}

但是,添加ng-app指令:

代码语言:javascript
复制
<body ng-app="module">
    <div> {{ 1 + 2 }} </div>
</body>

渲染方式如下:

代码语言:javascript
复制
3

这是因为ng-app“自举”了body标签,并告诉Angular创建内容的“内部表示”。当然,内部表示是3。来自本教程:

“如果找到ng-app指令,则Angular将编译DOM,将ng-app指令视为编译的根。这允许您告诉它只将DOM的一部分视为Angular应用程序。”

Angular还加载与ng-app指令相关的模块( Angular教程中的“module”),并创建一个应用程序注入器(用于依赖项注入)。

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

https://stackoverflow.com/questions/21058213

复制
相关文章

相似问题

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