查看原文:http://note.youdao.com/noteshare?id=de523a4c98c7ace4e033c4699bf45bc5&sub=D8323781B8BF4DE9B548F3911DEE6159
一、AngularJS 简介
-----------------------------------------
AngularJS 是一个 JavaScript 框架。它是一个以 JavaScript 编写的库。
AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中:
AngularJS 通过 ng-directives 扩展了 HTML。
ng-app 指令定义一个 AngularJS 应用程序。
ng-model 指令把元素值(比如输入域的值)绑定到应用程序。
ng-bind 指令把应用程序数据绑定到 HTML 视图。
名字 :
当网页加载完毕,AngularJS 自动开启。
ng-app 指令告诉 AngularJS,
ng-model 指令把输入域的值绑定到应用程序变量 name。
ng-bind 指令把应用程序变量 name 绑定到某个段落的 innerHTML。
AngularJS 把应用程序数据绑定到 HTML 元素。
AngularJS 可以克隆和重复 HTML 元素。
AngularJS 可以隐藏和显示 HTML 元素。
AngularJS 可以在 HTML 元素"背后"添加代码。
AngularJS 支持输入验证。
二、AngularJS 指令
------------------------------------------
ng-init 指令初始化 AngularJS 应用程序变量。
姓名为
ng-bind == {{ expression }
AngularJS 将在表达式书写的位置"输出"数据。
我的第一个表达式: {{ 5 + 5 }}
总价: {{ quantity * cost }}
使用 ng-bind 的相同实例:
总价:
ng-repeat 指令会重复一个 HTML 元素
使用 ng-repeat 来循环数组
循环对象:
ng-app 指令定义了 AngularJS 应用程序的 根元素。
ng-app 指令在网页加载完毕时会自动引导(自动初始化)应用程序。
ng-init 指令为 AngularJS 应用程序定义了 初始值。
通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。
ng-init 指令为 AngularJS 应用程序定义了 初始值。
通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。
ng-model 指令 绑定 HTML 元素 到应用程序数据。
ng-model 指令也可以:
除了 AngularJS 内置的指令外,我们还可以创建自定义指令。
你可以使用 .directive 函数来添加自定义的指令。
要调用自定义指令,HTML 元素上需要添加自定义指令名。
使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割, runoob-directive:
注意: 我们需要在该实例添加 replace 属性, 否则评论是不可见的。
注意: 你必须设置 restrict 的值为 "M" 才能通过注释来调用指令。
三、AngularJS 应用
-------------------------------------------------------
AngularJS 模块(Module) 定义了 AngularJS 应用。
AngularJS 控制器(Controller) 用于控制 AngularJS 应用。
ng-app指令指明了应用, ng-controller 指明了控制器。
AngularJS 模块定义应用:
var app = angular.module('myApp', []);
AngularJS 控制器控制应用
app.controller('myCtrl', function($scope) { $scope.firstName= "John"; $scope.lastName= "Doe"; });
四、AngularJS 数据类型
-----------------------------------------------
数值
总价: {{ quantity * cost }}
字符串
姓名: {{ firstName + " " + lastName }}
对象
姓为 {{ person.lastName }}
数组
第三个值为 {{ points[2] }}
五、ng-model 指令
-------------------------------------------------
ng-model 指令可以将输入域的值与 AngularJS 创建的变量绑定。
双向绑定,在修改输入域的值时, AngularJS 属性的值也将修改:
修改输入框的值,标题的名字也会相应修改。
验证用户输入
在输入框中输入你的邮箱地址,如果不是一个合法的邮箱地址,会弹出提示信息。
应用状态
CSS类
编辑文本域,不同状态背景颜色会发生变化。
文本域添加了 required 属性,该值是必须的,如果为空则是不合法的。
六、Scope(作用域)
-----------------------------------------
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个对象,有可用的方法和属性。
Scope 可应用在视图和控制器上。
当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递:
控制器中的属性对应了视图上的属性:
控制器中创建一个属性名 "carname",对应了视图中使用 {{ }} 中的名称。
当在控制器中添加 $scope 对象时,视图 (HTML) 可以获取了这些属性。
视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如: {{carname}}。
scope 是模型。
scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。
当你修改输入框中的值时,会影响到模型(model),当然也会影响到控制器对应的属性值。
了解你当前使用的 scope 是非常重要的。
在以上两个实例中,只有一个作用域 scope,所以处理起来比较简单,但在大型项目中, HTML DOM 中有多个作用域,这时你就需要知道你使用的 scope 对应的作用域是哪一个。
所有的应用都有一个 $rootScope,它可以作用在 ng-app 指令包含的所有 HTML 元素中。
$rootScope 可作用于整个应用中。是各个 controller 中 scope 的桥梁。用 rootscope 定义的值,可以在各个 controller 中使用。
注意 $rootScope 在循环对象内外都可以访问。
七、AngularJS 控制器
--------------------------------------------------------------------
AngularJS 控制器 控制 AngularJS 应用程序的数据。
AngularJS 控制器是常规的 JavaScript 对象。
AngularJS 应用程序被控制器控制。
ng-controller 指令定义了应用程序控制器。
控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。
AngularJS 应用程序由 ng-app 定义。应用程序在
ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。
myCtrl 函数是一个 JavaScript 函数。
AngularJS 使用$scope 对象来调用控制器。
在 AngularJS 中, $scope 是一个应用对象(属于应用变量和函数)。
控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。
控制器在作用域中创建了两个属性 (firstName 和 lastName)。
ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。
八、过滤器
--------------------------------------------------
AngularJS 过滤器可用于转换数据
过滤器可以通过一个管道字符(|)和一个过滤器添加到表达式中。.
uppercase 过滤器将字符串格式化为大写:
姓名为 {{ lastName | uppercase }}
lowercase 过滤器将字符串格式化为小写:
姓名为 {{ lastName | lowercase }}
currency 过滤器将数字格式化为货币格式:
总价 = {{ (quantity * price) | currency }}
orderBy 过滤器根据表达式排列数组:
filter 过滤器从数组中选择一个子集:
以下实例自定义一个过滤器 reverse,将字符串反转:
九、服务(Service)
-----------------------------------------------------
AngularJS 中你可以创建自己的服务,或使用内建服务。
有个 $location 服务,它可以返回当前页面的 URL 地址。
var app = angular.module('myApp', []); app.controller('customersCtrl', function($scope, $location) { $scope.myUrl = $location.absUrl(); });
$http 是 AngularJS 应用中最常用的服务。 服务向服务器发送请求,应用响应服务器传送过来的数据。
欢迎信息:
$http 服务向服务器请求信息,返回的值放入变量 "myWelcome" 中。
$timeout 服务对应了 JS window.setTimeout 函数。
两秒后显示信息:
$timeout 访问在规定的毫秒数后执行指定函数。
$interval 服务对应了 JS window.setInterval 函数。
var app = angular.module('myApp', []); app.controller('myCtrl', function($scope, $interval) { $scope.theTime = new Date().toLocaleTimeString(); $interval(function () { $scope.theTime = new Date().toLocaleTimeString(); }, 1000); });
你可以创建自定义服务,链接到你的模块中:
255 的16进制是:
自定义服务,用于转换16进制数:
当你创建了自定义服务,并连接到你的应用上后,你可以在控制器,指令,过滤器或其他服务中使用它。
在对象数组中获取值时你可以使用过滤器:
在获取数组 [255, 251, 200] 值时使用过滤器:
过滤器使用服务将10进制转换为16进制。
$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。
// 简单的 GET 请求,可以改为 POST $http({ method: 'GET', url: '/someUrl' }).then(function successCallback(response) { // 请求成功执行代码 }, function errorCallback(response) { // 请求失败执行代码 });
十、Select(选择框)
-------------------------------------------------------
在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,如下实例:
该实例演示了 ng-options 指令的使用。
选择一辆车:
你选择的是: {{selectedCar.brand}}
型号为: {{selectedCar.model}}
颜色为: {{selectedCar.color}}
下拉列表中的选项也可以是对象的属性。
十一、表格
-----------------------------------------------------
{{ $index + 1 }} | {{ x.Name }} | {{ x.Country }} |
ng-disabled 指令
按钮
{{ mySwitch }}
ng-disabled 指令绑定应用程序数据 "mySwitch" 到 HTML 的 disabled 属性。
ng-model 指令绑定 "mySwitch" 到 HTML input checkbox 元素的内容(value)。
ng-show 指令
我是可见的。
ng-hide 指令
我是不可见的。
我是可见的。
ng-click 指令
ng-click 指令定义了 AngularJS 点击事件。
{{ count }}
模块
你可以通过 AngularJS 的 angular.module 函数来创建模块:
通常 AngularJS 应用程序将模块和控制器包含在 JavaScript 文件中。
HTML 控件
以下 HTML input 元素被称为 HTML 控件:
Input 控件使用 ng-model 指令来实现数据绑定。
checkbox
的值为 true 或 false,可以使用 ng-model 指令绑定,它的值可以用于应用中:
标题使用了 ng-show 指令,复选框选中后显示 h1 标签内容。
单选框
使用同一个 ng-model ,可以有不同的值,但只有被选中的单选按钮的值会被使用。
Welcome to a world of dogs.
Learn from examples.
Read about cars.
ng-switch 指令根据单选按钮的选择结果显示或隐藏 HTML 区域。
使用 ng-model 指令可以将下拉菜单绑定到你的应用中。
ng-model 属性的值为你在下拉菜单选中的选项:
输入验证
AngularJS 表单和控件可以提供验证功能,并对用户输入的非法数据进行警告。
十二、AngularJS 全局 API
-------------------------------------------------------------------
{{ x1 }}
{{ x2 }}
{{ x1 }}
{{ x2 }}