是时候创建一个真正的AngularJS单页面应用程序了(SPA)。


一个AngularJS应用程序示例

  你已经了解了足够多的内容来创建第一个AngularJS应用程序:


程序代码即解释

<html ng-app="myNoteApp">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<body> <div ng-controller="myNoteCtrl"> <h2>My Note</h2> <p><textarea ng-model="message" cols="40" rows="10"></textarea></p> <p>
<button ng-click="save()">Save</button>
<button ng-click="clear()">Clear</button>
</p> <p>Number of characters left: <span ng-bind="left()"></span></p> </div> <script src="myNoteApp.js"></script>
<script src="myNoteCtrl.js"></script> </body>
</html>

运行

  application文件"myNoteApp.js"代码:

var app = angular.module("myNoteApp", []);

  controller文件"myNoteCtrl.js"代码:

app.controller("myNoteCtrl", function($scope) {
$scope.message = "";
$scope.left = function() {return 100 - $scope.message.length;};
$scope.clear = function() {$scope.message = "";};
$scope.save = function() {alert("Note Saved");};
});

  元素<html>被指定为AngularJS application的容器:ng-app="myNoteApp":

<html ng-app="myNoteApp">

  页面中的<div>元素指定了控制器的作用域:ng-controller="myNoteCtrl":

<div ng-controller="myNoteCtrl">

  ng-model指令将<textarea>元素绑定到控制器的message变量中:

<textarea ng-model="message" cols="40" rows="10"></textarea>

  两个ng-click事件分别调用了控制器中的clear()函数和save()函数:

<button ng-click="save()">Save</button>
<button ng-click="clear()">Clear</button>

  ng-bind指令将控制器的left()函数绑定到<span>元素上,用以显示剩余可以输入的字符数:

Number of characters left: <span ng-bind="left()"></span>

  application libraries被添加到页面上(在AngularJS类库引用之后):

<script src="myNoteApp.js"></script>
<script src="myNoteCtrl.js"></script>

AngularJS应用程序框架

  通过上面的示例,你已经拥有了一个真正的AngularJS应用程序框架(或者称之为脚手架),它是一个单页面应用程序(SPA)。

  ng-app指令所在的HTML元素被定义为AngularJS应用程序的容器。

  指令ng-controller所在的元素定义了AngularJS应用程序控制器的作用域。

  在一个应用程序中你可以拥有多个控制器。

  一个application文件(例如my...App.js)定义了一个application模块的代码。

  一个或多个控制器文件(例如my...Ctrl.js)定义了控制器的代码。


它是如何工作的?

  ng-app指令被放在application的根元素上。

  对单页面应用程序(SPA)而言,application的根元素即<html>元素。

  一个或多个ng-controller指令定义了application中不同的控制器。每一个控制器都有它自己的作用域:即包含该指令定义的HTML元素。

  当HTML的DOMContentLoaded事件被执行时AngularJS会被自动调用。如果找到ng-app指令,AngularJS将会加载所有以指令命名的模块,并对以ng-app定义的application的根元素内的DOM进行编译。

  application的根可以是整个页面,也可以是页面中的一小部分。AngularJS application定义的部分越小,application编译和执行的速度越快。

AngularJS快速入门指南18:Application的更多相关文章

  1. AngularJS快速入门指南19:示例代码

    本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...

  2. AngularJS快速入门指南17:Includes

    使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...

  3. AngularJS快速入门指南01:导言

    AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 ...

  4. AngularJS快速入门指南20:快速参考

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  5. AngularJS快速入门指南16:Bootstrap

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  6. AngularJS快速入门指南15:API

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  7. AngularJS快速入门指南13:表单

    一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...

  8. AngularJS快速入门指南12:模块

    AngularJS模块定义了一个application. 模块是一个application中不同部分的容器. application中的所有控制器都应该属于一个模块. 带有一个控制器的模块 下面这个a ...

  9. AngularJS快速入门指南11:事件

    AngularJS拥有自己的HTML事件指令. ng-click指令 ng-click指令定义了AngularJS的click事件. <div ng-app="" ng-co ...

随机推荐

  1. 清空StringBuilder的三种方法及效率

    清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ...

  2. Three ways to set specific DeviceFamily XAML Views in UWP

    Three ways to set specific DeviceFamily XAML Views in UWP http://igrali.com/2015/08/02/three-ways-to ...

  3. ROS BY EXAMPLE 1 -- 环境设置与安装

    rbx1 package 的环境设置: sudo apt-get install ros-indigo-turtlebot-bringup \ ros-indigo-turtlebot-create- ...

  4. Sublime无法使用package control安装插件

    我之前想通过安装sftp,但是出现了这个问题,百度了很久才解决.东西也是从网上找的,现总结下:   网上说什么安装个新的,我也是简直醉了,其实新的并不好使. 但是,我们最好安装个新的,再继续下面的操作 ...

  5. Java读取文件的几种方式

    package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...

  6. javascript中array常用属性方法

    属性: length 表示一个无符号 32-bit 整数,返回一个数组中的元素个数. 截短数组..截短至长度2  则:   .length = 2 方法: Array.from() 方法可以将一个类数 ...

  7. C# interface

    我们学习了interface,即接口,其与抽象类有点像,但是他们也有一些区别,比如类不能多重继承但是接口却可以多重继承. 接口只包含方法.委托或事件和属性的签名(接口包含的成员).不能包含字段(因为字 ...

  8. H5 canvas填充文字自动换行

    canvas是H5中非常重要,非常常用,也是非常强大的一个新标签,美中不足的事,canvas中没没有自动换行的属性,我的第一反应是,字符串截取,然后计算每行的距离来实现自动换行.. 然后百度了一下,已 ...

  9. Java中if语句,嵌套使用 一道面试题

    偶然看到这道题,起初还迷糊了,特此记录 int a = 100;if(a < 100) if(a < 200){ System.out.println("a < 200&q ...

  10. 像素&分辨率

    1.像素 是组成图像的基本单元:点 2.分辨率 是指在长和宽的两个方向上各拥有的像素的个数. 3.一张640*480的图片,表示图片在每个长度方向上都有640个像素,在宽度方向上都有480个像素,总数 ...