是时候创建一个真正的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. 判断AngularJS渲染页面完成

    $scope.$on('$viewContentLoaded', function(){ }); // 或者 $scope.$watch('$viewContentLoaded', function( ...

  2. sql中的日期查询

    今天的所有数据: 昨天的所有数据: 7天内的所有数据: 30天内的所有数据: 本月的所有数据: 本年的所有数据: 查询今天是今年的第几天: select datepart(dayofyear,getD ...

  3. java-base64编码和解码

    一.反射/*** * encode by Base64 */ public static String encodeBase64(byte[]input) throws Exception{ Clas ...

  4. 如果因特网中的所有链路都提供可靠的交付服务,TCP可靠传输服务是多余的吗?

    IP协议因为是无连接的, 所以其传输是不可靠的.虽然链路保证了数据包在端到端的传输中不发生差错,但是它不能保证IP数据包是按照正确的书需到达最终的目的地.IP数据包可以使用不同的路由通过网络,到达接收 ...

  5. Trie树的创建、插入、查询的实现

    原文:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28977986&id=3807947 1.什么是Trie树 Tr ...

  6. MySQL 分区表

    转载自MySQL 分区表 今天统计数据的时候发现一张表使用了表分区,借此机会记录一下. 1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分.从逻辑上看, ...

  7. 利用xtraBackup实现不停master服务做主从同步

    MySQL主从同步原理: MySQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态 ...

  8. 使用joi来验证数据模型

    我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证.然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式 ...

  9. PERL/LEX/YACC技术实现文本解析--XML解析

    继周六的p_enum.pl后,再来一篇说说我用perl做的lex,yacc工具.之前说了,我学习lex和yacc的最初动机是为了做个C语言解释器的SHELL:但后来工作中的实际需要也是制作perl版l ...

  10. 【转】Chrome快捷键

    感谢原作者:http://www.cnblogs.com/mikalshao/archive/2010/11/03/1868568.html 标签页和窗口快捷键 Ctrl+N 打开新窗口. Ctrl+ ...