AngularJS ng-app的自动加载与属性值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AngularJS ng-app的自动加载与属性值相关的知识,希望对你有一定的参考价值。


ng-app 指令用于告诉 AngularJS 应用当前这个元素是根元素,所有 AngularJS 应用都必须要要一个根元素。


使用ng-app来标记一个DOM结点,在网页加载完毕时会自动引导(自动初始化)应用程序。

ng-app可以带属性值,可以指定加载应用模块的名称,ng-app="模块名称"。


但是html文档中只允许有一个 ng-app 指令,如果有多个 ng-app 指令,则只有第一个会被使用。

所以想要实现自动加载,那么就不能让ng-app带有属性值,即不能指定载入应用模块名称。


正确写法

<body ng-app>
    <div ><p> {{ 5 + 5 }}</p> </div>
    <div ><p> {{ 10 + 10 }}</p> </div>
</body>


只加载第一个块

<body >
    <div ng-app><p> {{ 5 + 5 }}</p> </div>
    <div ng-app><p> {{ 10 + 10 }}</p> </div>
</body>


以下为ng-app添加属性值的写法都是错误的,会报错

<body ng-app=“myApp”>
    <div ><p> {{ 5 + 5 }}</p> </div>
    <div ><p> {{ 10 + 10 }}</p> </div>
</body>


<body >
    <div ng-app=“app1”><p> {{ 5 + 5 }}</p> </div>
    <div ng-app=“app2”><p> {{ 10 + 10 }}</p> </div>
</body>



带属性值时候需要手动加载对应ng-app

<body>
    <div id="app1" ng-app="app1">{{ 5 + 5 }}</div>
    <div id="app2" ng-app="app2">{{ 10 + 10 }}</div>
    <script type="text/javascript">
        var app1 = angular.module("app1", []);
        var app2 = angular.module("app2", []);
        angular.bootstrap(document.getElementById("app2"), [ ‘app2‘ ]);
    </script>
</body>

app1会自动加载

app2需要手动加载


angular.bootstrap() ,手动启动 AngularJS

文档地址 https://docs.angularjs.org/api/ng/function/angular.bootstrap


angular.bootstrap(element, [modules], [config]);

Arguments

ParamTypeDetails
elementDOMElement      

DOM element which is the root of angular application.

modules

(optional)

Array<String|Function|Array>=      

an array of modules to load into the application.    Each item in the array should be the name of a predefined module or a (DI annotated)    function that will be invoked by the injector as a config block.    See: modules

config

(optional)

Object      

an object for defining configuration options for the application. The    following keys are supported:

  • strictDi - disable automatic function annotation for the application. This is meant to assist in finding bugs which break minified code. Defaults to false.


element应该对应根ng-app的id,

modules 模块名数组


以上是关于AngularJS ng-app的自动加载与属性值的主要内容,如果未能解决你的问题,请参考以下文章

angularJS 初始化

在AngularJS中同一个页面配置一个或者多个ng-app

AngularJs 指令

AngularJs学习笔记——ng-app

AngularJS

AngularJs中的模块定义,一个页面加载多个ng-app