您的位置:首页 > Web前端 > AngularJS

AngularJS笔记

2015-06-30 14:54 591 查看

指令:

ng-app指令来标明一个AngularJS应用程序,并通过AngularJS完成自动初始化应用和标记应用根作用域,同时载入和指令内容相关的模块,并通过拥有ng-app指令的标签为根节点开始编译其中的DOM。

ng-init指令初始化应用程序数据,也就是为AngularJS应用程序定义初始值,通常情况下,我们会使用一个控制器或模块来代替它,后面我们会介绍有关控制器和模块的知识。

AngularJS框架的核心功能之一 —— 数据绑定,由两个花括号{{}}组成,可以把数据绑定到HTML,类似JavaScript代码片段,可以包含文字、运算符和变量,通常在绑定数据中用到,表达式可以绑定数字、字符串、对象、数组,写在双大括号内:{{
expression }}。

在AngularJS中,只需要使用ng-model指令就可以把应用程序数据绑定到HTML元素,实现model和view的双向绑定。

指令ng-bind和AngularJS表达式{{}}有异曲同工之妙,但不同之处就在于ng-bind是在angular解析渲染完毕后才将数据显示出来的。

$scope就是把一个DOM元素连结到控制器上的对象,它提供一个绑定到DOM元素(以及其子元素)上的执行上下文。它也是一个JavaScript对象,指向应用程序作用域内的所有HTML元素和执行上下文。作用域呢,就是作为$scope的数据属性关联到DOM上的,并且能在需要调试的时候被获取到。

$rootScope:根作用域。

拥有了$scope,我们就可以操作作用域内任何我们想要获取的对象数据。

ng-hide指令,用于控制部分HTML元素可见(ng-hide="false")和不可见状态(ng-hide="true").ng-show指令和ng-hide用法相同但行为相反,这里就不做详细介绍了。

$emit()事件冒泡,$broadcast()事件向下传递。

自定义指令:directive

restrict:匹配模式。"A"属性,"E"元素,"M"注释,"C"class.

templateUrl:模板路径。

$templateCache,模板缓存

replace:是否替换内部内容

transclude:变换,指令之间互相嵌套。

link:function(scope,element,attr){}绑定事件

scope:{}//创建独立作用域

第三方指令库:AngularUI

过滤器

使用AngularJS过滤器可以实现对字符串的大小写转换、货币格式的转换、数组的过滤等等。

用法:管道字符(|)+过滤器名。

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

AngularJS中的$scope对象是模板的域模型,也称为作用域实例,通过为其属性赋值,可以传递数据给模板渲染。作用域(scope)可以加入与模板相关的数据和提供相关的功能。从概念上来说,AngularJS的作用域与MVVM模式的视图模型(view model)非常相似。

控制器的主要职责是初始化作用域实例,这种初始化有2种,1.提供模型的初始值。2.增加UI的相关行为以扩展$scope对象。控制器实际上就是js函数。

AngularJS的模型实际上是js对象。

ng-controller指令是作用域创建指令,用来创建scope类的新实例$scope,新创建的实例拥有$parent属性,并指向它的父作用域。

$parent属性:引用父作用域(慎用)。

将变量绑定为对象的属性,可以让子作用域继承父作用域的变量。

作用域层级可以看成是传送事件的列车,AngularJS允许跨越作用域层级传播带有信息的命名事件。事件可以从任何作用域开始分发,然后向上分发或向下广播。

每个作用域实例都有$on方法,用于注册作用域事件的处理器。

作用域的创建和销毁:$new(),$destroy

DI:依赖注入

$injector方法创建的对象称为服务,每个运行中的应用,只拥有一个给定服务的实例。

模块化:

AngularJS为自己定义了全局命名空间angular,它的其中一个函数是module,angular.module的调用会返回新创建模块的实例,然后用下面这两个参数调用controller函数即可。1.控制器的名字,2.控制器的构造函数。模块定义好后,通过指令ng-app="modulename"调用。

依赖注入:

1.将对象注册到模块上。AngularJS的$provide服务可以注册不同的对象创建方案。

2.factory方法是让对象加入依赖注入系统的最常用的方法,它十分灵活,又能实现复杂的对象创建逻辑。

3.provider方法是通用方法,首先,provider是一个函数,它返回包含$get属性的对象。该属性是一个工厂函数,它被调用时会返回service实例。可以认为,provider就是$get属性为工厂方法的对象。其次,provider函数返回的对象可以有其他属性和方法,在$get方法被调用前,还能设置配置信息。

4.AngularJS函数的参数由调用的人决定。

注册服务:

1.值,angular.module().value(),注册已初始化好的对象。

2.服务,angular.module().service(),此方法用于注册构造函数。

3.工厂函数:angular.module().factory(),创建注册函数,常用方法。

4.

路由:

$routeProvider对象

与后端服务器通信

AngularJS能够通过XHR和JSONP请求与各种后端交流,通过$http服务进行XHR和JSONP调用,以及专门面向RESTful后端接口的$resource服务。

XHR请求调用方法有1.$http.get(url,config),2.$http.post(url,data,config),3.$http.put(url,data,config),4.$http.delete(url,config),5.$http.head

JSONP请求调用1.$http.jsonp(url,config)。

通用方法:$http(configObject).

config(配置对象)说明

1.method:所用的http方法。2.url:请求目标的url,3.pramas:url参数。4.headers:额外的请求头,5.timeout:XHR请求超时时间(单位毫秒),6.cache:XHR GET请求的缓存开关。7.transformRequest,transformResponse:在提交数据前对数据类型进行转换。

转换请求数据

$http.post和$http.put方法接受js对象的值作为DATA参数时,如果DATA是js对象,则DATA会默认转化为json格式

处理HTTP响应

请求有2种结果,success和error,它们都有callback函数,callback有以下参数:1.data:实际的相应数据,status:响应的http状态,headers:访问http响应头信息的函数,config:请求触发时提供的配置对象。

promise API和$q服务

AngularJS拥有非常轻量化的poromise API实现——$q服务。

$q.defer()方法得到一个延迟(deferred)对象,此对象有两项职责,1.保存一个promise对象,这是被延迟的任务未来结果的占位符。2.提供方法使这个未来的任务完成(履行resolve或拒绝reject)。

then(successCallBack,errorCallBack)方法,注册回调,成功回调必选,错误回调可选。

resolve()方法,通知未来任务使之完成,传递给resolve方法的参数将会提供给注册过的成功回调。在成功回调之后,未来任务完成,承诺得到履行。

reject()方法,抛出异常,返回新的被拒绝的承诺对象,并利用参数指定拒绝的理由。

all()方法,能够同时启动多个异步任务,并在所有任务都完成后获得通知,它能从多个异步中聚合承诺,并返回组合后的承诺。

when()方法返回承诺的对象,其履行值为调用when方法时提供的参数。此方法还能将JS对象包装成承诺对象。

$resource服务

$resource服务允许我们消除重复代码,并让我们在更高级别上操作,用对象的形式去思考数据操作,用方法调用代替低级别的
4000
http调用。

杂谈:

数据双向绑定可以不用脏检查。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: