Use this directive to auto-bootstrap an AngularJS application. The ngApp
directive
designates the root element of the application and is typically placed near the root element
of the page - e.g. on the <body>
or <html>
tags.
There are a few things to keep in mind when using ngApp
:
ngApp
found in the document will be used to define the root element to auto-bootstrap as an
application. To run multiple applications in an HTML document you must manually bootstrap them using
angular.bootstrap
instead.ngApp
.
This includes directives such as ngIf
, ngInclude
and
ngView
.
Doing this misplaces the app $rootElement
and the app's injector,
causing animations to stop working and making the injector inaccessible from outside the app.You can specify an AngularJS module to be used as the root module for the application. This
module will be loaded into the $injector
when the application is bootstrapped. It
should contain the application code needed or have dependencies on other modules that will
contain the code. See angular.module
for more information.
In the example below if the ngApp
directive were not placed on the html
element then the
document would not be compiled, the AppController
would not be instantiated and the {{ a+b }}
would not be resolved to 3
.
ngApp
is the easiest, and most common way to bootstrap an application.
<div ng-controller="ngAppDemoController">
I can add: {{a}} + {{b}} = {{ a+b }}
</div>
Using ngStrictDi
, you would see something like this:
<div ng-app="ngAppStrictDemo" ng-strict-di>
<div ng-controller="GoodController1">
I can add: {{a}} + {{b}} = {{ a+b }}
<p>This renders because the controller does not fail to
instantiate, by using explicit annotation style (see
script.js for details)
</p>
</div>
<div ng-controller="GoodController2">
Name: <input ng-model="name"><br />
Hello, {{name}}!
<p>This renders because the controller does not fail to
instantiate, by using explicit annotation style
(see script.js for details)
</p>
</div>
<div ng-controller="BadController">
I can add: {{a}} + {{b}} = {{ a+b }}
<p>The controller could not be instantiated, due to relying
on automatic function annotations (which are disabled in
strict mode). As such, the content of this section is not
interpolated, and there should be an error in your web console.
</p>
</div>
</div>
<ANY
ng-app="angular.Module"
[ng-strict-di="boolean"]>
...
</ANY>
Param | Type | Details |
---|---|---|
ngApp | angular.Module |
an optional application module name to load. |
ngStrictDi
(optional)
|
boolean |
if this attribute is present on the app element, the injector will be created in "strict-di" mode. This means that the application will fail to invoke functions which do not use explicit function annotation (and are thus unsuitable for minification), as described in the Dependency Injection guide, and useful debugging info will assist in tracking down the root of these bugs. |