4.10 - AngularJS 学习笔记

查看原文: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 视图。

名字 :

Hello {{name}}

当网页加载完毕,AngularJS 自动开启。

ng-app 指令告诉 AngularJS,

元素是 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 来循环数组

  • {{ x }}

循环对象:

  • {{ x.name + ', ' + x.country }}

 

ng-app 指令定义了 AngularJS 应用程序的 根元素。

ng-app 指令在网页加载完毕时会自动引导(自动初始化)应用程序。

 

ng-init 指令为 AngularJS 应用程序定义了 初始值。

通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。

 

ng-init 指令为 AngularJS 应用程序定义了 初始值。

通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。

 

ng-model 指令 绑定 HTML 元素 到应用程序数据。

ng-model 指令也可以:

  • 为应用程序数据提供类型验证(number、email、required)。
  • 为应用程序数据提供状态(invalid、dirty、touched、error)。
  • 为 HTML 元素提供 CSS 类。
  • 绑定 HTML 元素到 HTML 表单。

 

 

除了 AngularJS 内置的指令外,我们还可以创建自定义指令。

你可以使用 .directive 函数来添加自定义的指令。

要调用自定义指令,HTML 元素上需要添加自定义指令名。

使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割, runoob-directive:

 

注意: 我们需要在该实例添加 replace 属性, 否则评论是不可见的。

注意: 你必须设置 restrict 的值为 "M" 才能通过注释来调用指令。

 

三、AngularJS 应用

-------------------------------------------------------

AngularJS 模块(Module) 定义了 AngularJS 应用。

AngularJS 控制器(Controller) 用于控制 AngularJS 应用。

ng-app指令指明了应用, ng-controller 指明了控制器。

名:
姓:

姓名: {{firstName + " " + lastName}}

 

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 属性的值也将修改:

名字:

你输入了: {{name}}

修改输入框的值,标题的名字也会相应修改。

 

验证用户输入

Email: 不是一个合法的邮箱地址

在输入框中输入你的邮箱地址,如果不是一个合法的邮箱地址,会弹出提示信息。

 

应用状态

Email:

编辑邮箱地址,查看状态的改变。

状态

Valid: {{myForm.myAddress.$valid}} (如果输入的值是合法的则为 true)。

Dirty: {{myForm.myAddress.$dirty}} (如果值改变则为 true)。

Touched: {{myForm.myAddress.$touched}} (如果通过触屏点击则为 true)。

 

CSS类

输入你的名字:

编辑文本域,不同状态背景颜色会发生变化。

文本域添加了 required 属性,该值是必须的,如果为空则是不合法的。

 

 

六、Scope(作用域)

-----------------------------------------

Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。

Scope 是一个对象,有可用的方法和属性。

Scope 可应用在视图和控制器上。

 

当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递:

控制器中的属性对应了视图上的属性:

{{carname}}

控制器中创建一个属性名 "carname",对应了视图中使用 {{ }} 中的名称。

当在控制器中添加 $scope 对象时,视图 (HTML) 可以获取了这些属性。

视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如: {{carname}}。

 

  • View(视图), 即 HTML。
  • Model(模型), 当前视图中可用的数据。
  • Controller(控制器), 即 JavaScript 函数,可以添加或修改属性。

 

scope 是模型。

scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。

{{greeting}}

当你修改输入框中的值时,会影响到模型(model),当然也会影响到控制器对应的属性值。

了解你当前使用的 scope 是非常重要的。

在以上两个实例中,只有一个作用域 scope,所以处理起来比较简单,但在大型项目中, HTML DOM 中有多个作用域,这时你就需要知道你使用的 scope 对应的作用域是哪一个。

所有的应用都有一个 $rootScope,它可以作用在 ng-app 指令包含的所有 HTML 元素中。

$rootScope 可作用于整个应用中。是各个 controller 中 scope 的桥梁。用 rootscope 定义的值,可以在各个 controller 中使用。

姓氏为 {{lastname}} 家族成员:

  • {{x}} {{lastname}}

注意 $rootScope 在循环对象内外都可以访问。

 

七、AngularJS 控制器

--------------------------------------------------------------------

 AngularJS 控制器 控制 AngularJS 应用程序的数据。

 AngularJS 控制器是常规的 JavaScript 对象。

AngularJS 应用程序被控制器控制。

ng-controller 指令定义了应用程序控制器。

控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。

名:
姓:

姓名: {{firstName + " " + lastName}}

AngularJS 应用程序由 ng-app 定义。应用程序在

内运行。

ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。

myCtrl 函数是一个 JavaScript 函数。

AngularJS 使用$scope 对象来调用控制器。

在 AngularJS 中, $scope 是一个应用对象(属于应用变量和函数)。

控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。

控制器在作用域中创建了两个属性 (firstName 和 lastName)。

ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。

名:
姓:

姓名: {{fullName()}}

 

First Name: 
Last Name: 

Full Name: {{firstName + " " + lastName}}

 

八、过滤器

--------------------------------------------------

AngularJS 过滤器可用于转换数据

 

过滤器可以通过一个管道字符(|)和一个过滤器添加到表达式中。.

uppercase 过滤器将字符串格式化为大写:

姓名为 {{ lastName | uppercase }}

lowercase 过滤器将字符串格式化为小写:

姓名为 {{ lastName | lowercase }}

currency 过滤器将数字格式化为货币格式:

总价 = {{ (quantity * price) | currency }}

orderBy 过滤器根据表达式排列数组:

           {{ x.name + ', ' + x.country }}   

filter 过滤器从数组中选择一个子集:

           {{ (x.name | uppercase) + ', ' + x.country }}   

以下实例自定义一个过滤器 reverse,将字符串反转:

姓名: {{ msg | reverse }}

 

 

九、服务(Service)

-----------------------------------------------------

AngularJS 中你可以创建自己的服务,或使用内建服务。

有个 $location 服务,它可以返回当前页面的 URL 地址。

var app = angular.module('myApp', []); app.controller('customersCtrl', function($scope, $location) {     $scope.myUrl = $location.absUrl(); });

$http 是 AngularJS 应用中最常用的服务。 服务向服务器发送请求,应用响应服务器传送过来的数据。

欢迎信息:

{{myWelcome}}

$http 服务向服务器请求信息,返回的值放入变量 "myWelcome" 中。

$timeout 服务对应了 JS window.setTimeout 函数。

两秒后显示信息:

{{myHeader}}

$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进制是:

{{hex}}

自定义服务,用于转换16进制数:

当你创建了自定义服务,并连接到你的应用上后,你可以在控制器,指令,过滤器或其他服务中使用它。

在过滤器中使用服务:

{{255 | myFormat}}

在对象数组中获取值时你可以使用过滤器:

在获取数组 [255, 251, 200] 值时使用过滤器:

  • {{x | myFormat}}

过滤器使用服务将10进制转换为16进制。

$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。

// 简单的 GET 请求,可以改为 POST $http({     method: 'GET',     url: '/someUrl' }).then(function successCallback(response) {         // 请求成功执行代码     }, function errorCallback(response) {         // 请求失败执行代码 });

  • {{ x.Name + ', ' + x.Country }}

 

 

十、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 文件中。

{{ firstName + " " + lastName }}

 

HTML 控件

以下 HTML input 元素被称为 HTML 控件:

  • input 元素
  • select 元素
  • button 元素
  • textarea 元素

 

Input 控件使用 ng-model 指令来实现数据绑定。

 

checkbox

的值为 true 或 false,可以使用 ng-model 指令绑定,它的值可以用于应用中:

选中复选框,显示标题:

My Header

标题使用了 ng-show 指令,复选框选中后显示 h1 标签内容。

 

单选框

使用同一个 ng-model ,可以有不同的值,但只有被选中的单选按钮的值会被使用。

选择一个选项: Dogs Tutorials Cars

Dogs

Welcome to a world of dogs.

Tutorials

Learn from examples.

Cars

Read about cars.

ng-switch 指令根据单选按钮的选择结果显示或隐藏 HTML 区域。

使用 ng-model 指令可以将下拉菜单绑定到你的应用中。

ng-model 属性的值为你在下拉菜单选中的选项:

 

输入验证

AngularJS 表单和控件可以提供验证功能,并对用户输入的非法数据进行警告。

验证实例

用户名:
用户名是必须的。

邮箱:
邮箱是必须的。 非法的邮箱地址。

 

 

 

十二、AngularJS 全局 API

-------------------------------------------------------------------

 

{{ x1 }}

{{ x2 }}

 

{{ x1 }}

{{ x2 }}

 

 

 

 

你可能感兴趣的:(前端)