AngularJS学习总结
第一章 简单认识AngularJS
1、双向数据绑定
可通过ng-model监控输入
ng-app属性声明所有被其包含的内容都属于这个AngularJs应用,这也是我们在web应用中嵌套AngularJs的原因
只有被具有ng-app属性的DOM元素包含的元素才会受AngularJs的影响
2、MVC模式
MVC是一种软件架构设计模式,它将表现从用户交互中分离出来;模型中包含应用的数据和与数据进行交互的方法,视图将数据
呈现给用户,而控制器则是二者之间的桥梁。
3、模块
使用angular.module()方法来声明模块,这个方法能够接受两个参数,第一个是模块名称,第二个是依赖列表,也就是可以被注入
到模块中的对象列表。
angular.module('myapp',[]);//此方法是用来定义模块的
angular.module('myapp'); //获取对模块的引用
开发大型应用时,我们会创建多个模块来承载业务逻辑
参数:
1、name :模块的名称 字符串变量
2、requires: 包含了一个字符串变量组成的列表,每个元素都是一个模块名称
4、作用域 (scope)
作用域是构成AngularJs应用的核心基础
$scope对象是定义应用业务逻辑、控制器方法和视图属性的地方
$rootScope是AngularJs中最接近全局作用域的对象
$scope 对象就是一个普通的JavaScript对象,我们可以在其上随意修改和添加属性
$scope对象在AngualrJs中充当数据模型,但与传统的数据模型不一样,它不负责处理和操作数据,只是视图和HTML之间的桥梁
,是视图和控制器之间的胶水
*****$scope的所有属性,都可以自动被视图访问到
可以使用$scope的$destory()的方法来清理作用域(尽管angualrJs会自己清理作用域)
5、多种标记
可以在AngularJs应用的模板中使用多种标记
指令:将DOM元素增强为可复用的DOM组件的属性或元素 指令通常不会创建自己的$scope,但也有例外,比如:ng-controller,ng-repeat会
创建自己的子作用域并将它们附加到DOM元素上
值绑定:模板语法{{}}可以将表达式绑定到视图上
过滤器:可以在视图中使用的函数,用来进行格式化
表单控件:用来检验用户输入的控件
6、控制器
AngularJs允许我们在视图中像调用普通数据一样调用$scope上的函数。
angularJs同其他js框架最主要的区别:控制器并不适合用来执行DOM操作、格式化或数据操作,以及除存储数据模型之外的状态维护操作
它只是视图和$scope之间的桥梁。
AngularJS允许在$scope上设置包括对象在内的任何类型的数据,并且在视图中还可以展示对象的属性。
控制器嵌套:(作用域包含作用域)
7、表达式
表达式特性:
1、所有的表达式都在其所属的作用域内部执行,并有访问$scope的权限
2、如果表达式发生了TypeError和ReferenceError并不会抛异常
3、不允许使用任何流程控制功能
4、可以接受过滤器和过滤器链
AngularJs 会在运行$digest循环的过程中自动解析表达式
AngularJS通过$parse这个内部服务来进行表达式的运算,将$parse服务注入到控制器中,然后调用它就可以实现手动解析表达式
8、 过滤器
过滤器用来格式化需要展示给用户的数据,AngularJs有很多实用的内置过滤器,同时也提供了方便的途径可以自己创建过滤器
过滤器可以在html中使用 例如:{{123.456789 | number:2 }} 过滤器和参数之间用冒号分割; 使用多个过滤器时,用| 短竖线分割
也可以在js中使用过滤器
AngularJS提供的内置过滤器:
1、currency:可以将一个数值格式化为货币格式,但是也可以自定义货币符号
{{123 |currency }}
2、date :可以将日期格式化为需要的格式
年份格式化:
四位:{{today | date:'yyyy'}}
两位:{{today | date:'yy'}}
一位:{{today | date:'y'}}
还有月份、日期等格式 详见AngularJs权威教程page25
3、filter:可以从给定数组中选择一个子集,并将其生成一个新数组返回。
这个过滤器通常用来过滤需要进行展示的元素
第一个参数:
这个过滤器的第一个参数可以是字符串、对象、或是一个用来从数组中选择元素的函数
字符串:返回所有包含该字符串的元素(还可以通过加!表示不包含此字符串的所有元素)
例如:{{['Air','Lerner','Likes','Eat','Pizza'] | filter:'e' }}
对象:AngularJs会将待过滤对象的属性同这个对象中的同名属性进行比较
{{[{
'name':'Ari',
'city':'San Franisco',
'favorite Food':'Pizza'
},
{
'name':'Kate',
'city':'indian Franisco',
'favorite Food':'Pizza'
}
] | filter:{'favorite Food':'Pizza'} }}
函数:对每个元素都执行这个函数,返回非假值的元素会出现在新的数组中并返回
(也可以用自定义函数进行过滤,这个函数定义在$scope上)
第二个参数:用来指定预期值同实际值进行比较的方式
4、json
json 过滤器可以将一个JSON或js对象转换成字符串。
{{{'name':'Ari','City':'San Francisco'}| json }}
5、limitTo :会根据传入的参数生成一个新的数组或字符串
例如:截取字符串的前三个字符
{{San Franisco is very cloudy | limitTo:3}}
截取字符串的后六个字符
{{San Franisco is very cloudy | limitTo-6}}
返回数组的第一个元素
{{['a','b','c','d'] | limitTo: 1 }}
6、lowercase:将字符串转为小写
{{"San Franisco is very cloudy" | lowercase}}
7、number :将数字格式化为文本,第二个参数可选:用来控制小数点后截取的位数
{{123.46789 | number:2}}
8、orderBy:可以用表达式对指定的数组进行排序
第一个参数:是用来确定数组排序方向的谓词(即根据什么来排序)
第二个参数:用来控制排序的方向(是否逆向)
9、uppercase:将字符串转为大写
{{"San Franisco is very cloudy" | uppercase}}
10、自定义过滤器
注意:angular.module('这里只能写ng-app的值',[]);
11、表单验证
AngularJs能够将HTML5表单验证功能同它自己的验证指令结合起来使用,并且非常方便
要使用表单验证,首先要确保表单form中有name属性
如果想要屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加novalidate标记
可以在input上使用的所有验证选项:
1、必填项:required
2、最小长度:ng-minlength=‘位数’
3、最大长度:ng-maxlength=‘位数’
4、模式匹配:ng-pattern=‘正则表达式’
5、电子邮件:type=‘email’
6、数字:type=‘number’
7、URL: type=‘url’
8、自定义验证:第十章讲
9、在表单中控制变量
根据表单的属性,可以对表单做出实时响应
formName.inputName.property
未修改的表单: formName.inputName.$pristine
修改过的表单: formName.inputName.$dirty
合法的表单: formName.inputName.$valid
不合法的表单: formName.inputName.$invalid
错误: $error对象,它包含当前表单的所有验证内容,以及它们是否合法的信息,用下面语句访问这个属性
formName.inputName.$error
第二章 指令简介
1、指令:自定义HTML元素和属性
指令本质上就是AngularJS扩展具有自定义功能的HTML元素的途径
2、HTML引导
当浏览器加载一个包含AngularJS应用的HTML时,我们只需要一小段简单的代码就能够启动AngularJs应用。
在HTML中要用内置指令ng-app标记出应用的根节点。这个指令需要以属性的形式来使用,因此可以将它写到任何位置,但是写到<html>的开始标签上是最常规的做法:
内置指令是打包在AngularJS内部的指令。所有内置指令的命名空间都使用ng作为前缀。为防止命名冲突,不要在自定义指令前加ng前缀。
现在,在HTML元素中可以使用所有内置指令和自定义指令了。同时,基于JavaScript的原型继承机制,任何在这个根元素内部的指令只要能够访问作用域,就可以访问$rootscope。
这里的能够访问作用域指的是同DOM进行了链接,这个操作会在指令稍后的生命周期中进行。
3、我们的第一个指令
让我们来创建一个自定义指令:<my-directive></my-directive>
假设我们已经创建了一个完整的HTML文档,其中包含了AngularJS,并且DOM中已经用ng-app指令标识出了应用的根元素,当AngualrJs编译HTML时就会调用指令。
调用指令意味着执行指令背后与之相关的JavaScript代码,这些代码是我们用指令定义写出来的:
myDirective指令的定义是这样的:
angular.module('myApp',[])
.dirctive('myDirective',function(){
return {
restrict:'E',
template:'<a href="http://google.com">Click me to go to Gooogle</a>'
}
})
通过AngularJs模块API中的.directive()方法,我们可以通过传入一个字符串和一个函数注册一个新指令。其中字符串是这个指令的名字,指令名应该是驼峰命名风格的,函数用过返回一个对象。
因为我们之前在HTML里使用my-directive声明指令,因此指令定义必须以myDirective为名字
directive()方法返回的对象中包含了用来定义和配置指令的方法和属性。为了尽快掌握简单的属性定义,我们只用了restrict和template两个设置项来定义指令。
打开Chrome开发者工具,可以看到AngularJS在页面加载以及调用指令定义后生成的代码,AngularJS把生成后的代码提供给Chrome进行渲染
默认情况下,AngualrJS将模板生成的HTMl代码嵌套在自定义标签<my-directive>内部。
下面向指令定义中添加一些新的设置:我们可以将自定义标签从生成的DOM中完全移除掉,并只留下由模板生成的链接。将replace设置为true就可以实现这个效果:
angular.module("myApp",[])
.directive("myDirective",function(){
return {
restrict:'E',
replace:true,
template:'<a href="http://Google.com">Click me to go to Google</a>'
};
});
再次看一下生成后的代码,会发现DOM原始的指令已经不见了,只有我们在模板中写的HTML代码。replace方法会用自定义元素取代指令声明,而不是嵌套在其内部。
我们把创建的这些自定义元素称为指令(用directive()方法创建),因为事实上指令并不需要创建一个新的自定义元素。
下面都是用来声明前面创建指令的合法格式:
<my-directive></my-directive>
<div my-directive></div>
<div class="my-directive"></div>
你好你好
AngularJS学习总结的更多相关文章
- Angularjs学习---官方phonecat实例学习angularjs step0 step1
接下来一系列的文章都是学习https://docs.angularjs.org/tutorial的笔记,主要学习的angular-phonecat项目的实现,来介绍angularjs的使用. 1.下载 ...
- angularJS学习资源最全汇总
基础 官方: http://docs.angularjs.org angularjs官方网站已被墙,可看 http://www.ngnice.com/: 官方zip下载包 https://github ...
- 我的AngularJS 学习之旅
我的AngularJS 学习之旅 基础篇 1.Angular的 起源 2.比较Web 页面实现的几种方式 3.一些基本术语 4.Angular与其他框架的兼容性 5.总结 6.综合实例 很早之前就 ...
- 推荐10个很棒的AngularJS学习指南
AngularJS 是非常棒的JS框架,能够创建功能强大,动态功能的Web app.AngularJS自2009发布以来,已经广泛应用于Web 开发中.但是对想要学习Angular JS 的人而言,只 ...
- Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结
karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然后才可以安装karma.nodejs,npm的安装过程可以参考文章:Angularjs学习- ...
- AngularJs学习总结-了解基本特性(-)
现在的前端项目中基本上都会用到angularjs框架,之前并不了解这个框架,也是因为最近接手的项目,所以打算好好的学习下它.之前都是搞pc端,现在接手的是移动端的项目,移动端UI框架用的是ionic+ ...
- [整理]AngularJS学习资源
https://angular.io/docs/js/latest/(2.0官方网站) http://www.linuxidc.com/Linux/2014-05/102139.htm(Angular ...
- AngularJs学习笔记--Forms
原版地址:http://code.angularjs.org/1.0.2/docs/guide/forms 控件(input.select.textarea)是用户输入数据的一种方式.Form(表单) ...
- AngularJs学习笔记--expression
原版地址:http://code.angularjs.org/1.0.2/docs/guide/expression 表达式(Expressions)是类Javascript的代码片段,通常放置在绑定 ...
- AngularJs学习笔记--directive
原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directiv ...
随机推荐
- 通过JDBC进行简单的增删改查(以MySQL为例)
目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 ( ...
- 转载:java程序打包成jar 配置文件信息路径
一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该j ...
- DSP学习中遇到的几个问题(初级)
1..c和.asm 文件分别为C语言和汇编语言的源文件. 2..cmd是存储器分配说明文件,主要功能是指定工程中的各段分配到那段存储器中,比如有片内RAM(起始地址,大小)和SDRAM等.这些要根据平 ...
- 查看linux版本
http://nameyjj.blog.51cto.com/788669/557424 1. 查看内核版本命令: 1) [root@q1test01 ~]# cat /proc/version ...
- java基础快捷键(1)
1) 输出快捷键:System.out.println():在键盘上输入 Syso 然后按 Alt + ?:就出来了:System.out.println(); 2)主方法:(main): 快 ...
- 微软要支持Objective-C了
今天的新闻,见http://www.solidot.org/story?sid=43899 更详细的见,http://arstechnica.com/information-technology/20 ...
- 使用QRCode生成二维码
第一步: 获取QRCode组件 可以通过vs的nuget管理安装Gma.QrCodeNet, 也可以直接添加"Gma.QrCodeNet.Encoding.dll"的引用. 第二步 ...
- Linux系统中配置jdk
在Linux系统下安装jdk 1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8 ...
- html之如何让文字两端对齐
text-align: justify;/*英文*/ text-align-last: justify;/*中英文*/ text-align-last: justify;亲测有效(chrome)
- errorlevel
------siwuxie095 errorlevel 程序返回码 用法:echo %errorlevel% 查看当前程序返回码(即返回值),以知道程序或命令行是否执行成功. DOS在执行完后都有返回 ...