aboutsummaryrefslogtreecommitdiffstats
path: root/docs/content/tutorial/step_00.ngdoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/content/tutorial/step_00.ngdoc')
-rw-r--r--docs/content/tutorial/step_00.ngdoc102
1 files changed, 79 insertions, 23 deletions
diff --git a/docs/content/tutorial/step_00.ngdoc b/docs/content/tutorial/step_00.ngdoc
index b7f469ff..643ec23b 100644
--- a/docs/content/tutorial/step_00.ngdoc
+++ b/docs/content/tutorial/step_00.ngdoc
@@ -1,11 +1,11 @@
@ngdoc overview
-@name Tutorial: 0 - angular-seed
+@name Tutorial: 0 - Bootstrapping
@description
<ul doc:tutorial-nav="0"></ul>
-You are now ready to build the Angular phonecat application. In this step, you will become familiar
+You are now ready to build the AngularJS phonecat app. In this step, you will become familiar
with the most important source code files, learn how to start the development servers bundled with
angular-seed, and run the application in the browser.
@@ -143,23 +143,23 @@ href="http://localhost:8000/app/index.html">http://localhost:8000/app/index.html
You can now see the page in your browser. It's not very exciting, but that's OK.
-The static HTML page that displays "Nothing here yet!" was constructed with the HTML code shown
-below. The code contains some key Angular elements that we will need going forward.
+The HTML page that displays "Nothing here yet!" was constructed with the HTML code shown below.
+The code contains some key Angular elements that we will need going forward.
__`app/index.html`:__
<pre>
<!doctype html>
-<html xmlns:ng="http://angularjs.org/" ng:app>
+<html ng-app>
<head>
<meta charset="utf-8">
<title>my angular app</title>
- <link rel="stylesheet" href="css/app.css"/>
+ <link rel="stylesheet" href="css/app.css">
+ <script src="lib/angular/angular.js"></script>
</head>
<body>
- Nothing here yet!
+ Nothing here {{'yet' + '!'}}
- <script src="lib/angular/angular.js"></script>
</body>
</html>
</pre>
@@ -168,30 +168,70 @@ __`app/index.html`:__
## What is the code doing?
-* xmlns declaration
+* `ng-app` directive:
- <html xmlns:ng="http://angularjs.org" ng:app>
+ <html ng-app>
- This `xmlns` declaration for the `ng` namespace must be specified in all Angular applications in
-order to make Angular work with XHTML and IE versions older than 9 (regardless of whether you are
-using XHTML or HTML).
+ `ng-app` directive is a special tag used to flag an element which Angular should consider to be
+ the root element of our application. This gives application developers the freedom to tell Angular
+ if the entire html page or only a portion of it should be treated as the Angular application.
-* Angular script tag
+* AngularJS script tag:
<script src="lib/angular/angular.js">
- This single line of code is all that is needed to bootstrap an angular application.
-
- The code downloads the `angular.js` script and registers a callback that will be executed by the
+ This code downloads the `angular.js` script and registers a callback that will be executed by the
browser when the containing HTML page is fully downloaded. When the callback is executed, Angular
-looks for the {@link api/angular.directive.ng:app ng:app} attribute. If Angular finds
-`ng:app`, it creates a root scope for the application and associates it with the element of
-when `ng:app` was declared.
+looks for the {@link api/angular.module.ng.$compileProvider.directive.ng-app ng-app} directive. If
+Angular finds `ng-app`, it will bootstrap the application with the root of the application DOM being
+the element on which the `ng-app` directive was defined.
+
+* Double-curly binding with an expression:
+
+ Nothing here {{'yet' + '!'}}`
+
+ This line demonstrates the core feature of Angular's templating capabilities – a binding, denoted
+ by double-curlies `{{ }}` as well as a simple expression `'yet' + '!'` used in this binding.
+
+ The binding tells Angular, that it should evaluate an expression and insert the result into the
+ DOM in place of the binding. Rather than a one-time insert, as we'll see in the next steps, a
+ binding will result in efficient continuous updates whenever the result of the expression
+ evaluation changes.
+
+ {@link guide/dev_guide.expressions Angular expression} is a JavaScript-like code snippet that is
+ evaluated by Angular in the context of the current model scope, rather than within the scope of
+ the global context (`window`).
+
+ As expected, once this template is processed by Angular, the html page will contains text:
+ "Nothing here yet!".
+
+## Bootstrapping AngularJS apps
+
+Bootstrapping AngularJS apps automatically using the `ng-app` directive is very easy and suitable
+for most cases. In advanced cases, such as when using script loaders, you can use
+{@link guide/dev_guide.bootstrap.manual_bootstrap imperative / manual way} to bootstrap the app.
+
+There are 3 important things that happen during the app bootstrap:
+
+1. The {@link api/angular.module.AUTO.$injector injector} that will be used for dependency injection
+ within this app is created.
- <img src="img/tutorial/tutorial_00_final.png">
+2. The injector will then create the {@link api/angular.module.ng.$rootScope root scope} that will
+ become the context for the model of our application.
- As you will see shortly, everything in Angular is evaluated within a scope. We'll learn more
-about this in the next steps.
+3. Angular will then "compile" the DOM starting at the `ng-app` root element, processing any
+ directives and bindings found along the way.
+
+
+Once an application is bootstrapped, it will then wait for incoming browser events (such as mouse
+click, key press or incoming HTTP response) that might change the model. Once such event occurs,
+Angular detects if it caused any model changes and if changes are found, Angular will reflect them
+in the view by updating all of the affected bindings.
+
+The structure of our application is currently very simple. The template contains just one directive
+and one static binding, and our model is empty. That will soon change!
+
+<img src="img/tutorial/tutorial_00.png">
## What are all these files in my working directory?
@@ -208,9 +248,25 @@ For the purposes of this tutorial, we modified the angular-seed with the followi
* Added phone data files (JSON) to `app/phones`
+
+# Experiments
+
+* Try adding a new expression to the `index.html` that will do some math:
+
+ <p>1 + 2 = {{ 1 + 2 }}</p>
+
+
+
# Summary
Now let's go to {@link step_01 step 1} and add some content to the web app.
<ul doc:tutorial-nav="0"></ul>
+
+Move elsewhere:
+
+Note: During the bootstrap the injector and the root scope will then be associated with the
+ element on which `ng-app` was declared, so when debugging the app you can retrieve them from
+ browser console via `angular.element(rootElement).scope()` and
+ `angular.element(rootElement).injector()`.