是时候创建一个真正的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. c# GridView有关RowClick事件,可单击显示选中的row

    //当前选定行 int i = this.gridView1.FocusedRowHandle; //选中行,列名为name的值 gridView1.GetRowCellDisplayText(i, ...

  2. css大小单位px em rem的转换和详解

    css大小单位px em rem的转换和详解 PX特点1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能 ...

  3. iOS App打包上架的流程

    一.申请苹果开发者账号 首先需要申请苹果开发者账号才能在APP store 里发布应用. 开发者账号分为:(1)个人开发者账号   (2)企业开发者账号   主要的区别是:点击打开链接 1.个人开发者 ...

  4. VC++ Debugger Tips[转]

    本文摘自:http://blogs.msdn.com/b/vcblog/archive/2006/08/04/689026.aspx Hi, my name is Sergey Grankin and ...

  5. Spring学习笔记 6. 尚硅谷_佟刚_Spring_Bean 之间的关系

    1,继承关系 首先从简单的代码来看,有一个Address类,配置文件有两个bean (1)Address类 package com.zsq; public class Address { privat ...

  6. 注意ArrayAdapter的Add()方法

    ArrayAdapter类可以作为ListView等的适配器资源,并且可以动态向适配器中添加新的数据,这就是ArrayAdapter.Add()方法的作用.但是在使用该方法时如果出错,那就需要检查Ar ...

  7. css横向导航条

    css横向导航条有两种方法 1. ul li a li{float:left} #navlist li, #navlist a{height:44px;display:block;} a{width: ...

  8. IOS竖屏应用单个页面横屏的解决办法

    昨天朋友问我,怎么实现在竖屏的应用里,显示一个横屏的应用,由于也没做过 就说不知道了,但是我觉得会有这样的API ,因为我手机里就安装有这种类型的软件 今天早上起来,就想做一个Demo出来,惯例的是查 ...

  9. iOS CGContextRef画图时的常用方法

    UIView的drawRect方法 CoreGraphics绘图 综述:描述系统会调用UIView的drawRect方法,所以coreGraphics的所有实现代码放在该函数内,setNeedsDis ...

  10. JavaScript 基础第一天

    一.前言 如果将前端比喻成一人,那么Html就是这个人的骨骼脉络,CSS则是这个人的身上的装饰,JavaScript则是这个人的行为.作为一种脚本语言JavasSript具有着弱类型等特点.(在这里我 ...