angularjs 的笔记
angular.copy()深拷贝
angular提供了一个可以复制对象的api——copy(source,destination),它会对source对象执行深拷贝。
使用时需要注意下面几点:
- 如果只有一个参数(没有指定拷贝的对象),则返回一个拷贝对象
- 如果指定了destination,则会深拷贝对象复制给destination
- 如果source是null或者undefined,那么会直接返回source
- 如果source就是desitination,那么会报错。
angular.equals()比较对象
AngularJS中的angular.equals()方法用于比较两个对象、值或表达式是否相等。AngularJs文档中对equals方法比较的原则是这样描述的:
(1)比较的两个对象或值能够通过 === 表达式。===要求两个值不仅值相同,类型也要相同,也就是说,1 === “1”是不成立 的。
(2)比较的两个对象或值是相同类型的,而且它们所有的属性通过angular.equals()方法判断都是相等的。
(3)两个值都为(NaN)。(在JavaScript中认为NaN == NaN是false)
(4)两个值代表字面上相等的表达式,如两个正则表达式:/abc/与/abc/是相等的。
angular $apply()
$apply方法传播Model的变化。
那我们到底什么时候需要去调用apply()方法呢?情况非常少,实际上几乎我们所有的代码都包在scope.apply()里面,像ng−click,controller的初始化,http的回调函数等。在这些情况下,我们不需要自己调用,实际上我们也不能自己调用,否则在apply()方法里面再调用apply()方法会抛出错误。如果我们需要在一个新的执行序列中运行代码时才真正需要用到它,而且当且仅当这个新的执行序列不是被angular JS的库的方法创建的,这个时候我们需要将代码用scope.apply()包起来。
我是这样理解的该函数用于更新view的value,当需要变更view values时,需要调用该方法。典型地,这个函数由DOM的事件处理函数来调用。
比如,一个input directive在当它的input变更时就会调用$setViewValue,再比如:select控件在当一个option被选择时也会调用这个函数更新view value。
- $render();
当视图需要更新的时候会被调用。使用ng-model的指令应该自行实现这个方法。
- $isEmpty(value);
该方法用于判断输入值是否为空。
例如,使用ngModelController的指令需要判断其中是否有输入值的时候会使用该方法。该方法可用来判断值是否为undefined,'',null或者NaN。
你可以根据自己的需要重载该方法。
- $setValidity(validationErrorKey, isValid);
该方法用于改变验证状态,以及在控制变化的验证标准时通知表格。
这个方法应该由一个验证器来调用。例如,一个解析器或者格式化函数。
- $setPristine();
该方法用于设置控制到原始状态。
该方法可以移除'ng-dirty'类并将控制恢复到原始状态('ng-pristine'类)。
- $cancelUpdate();
该方法用于取消一次更新并重置输入元素的值以防止$viewCalue发生更新,它会由一个pending debounced事件引发或者是因为input输入框要等待一些未来的事件。
- $setViewValue();
该方法用于是为了在指令中改变ng-model绑定的值,适用于使用了独立作用域的指令(在没有双向绑定属性的情况下,无法通过scope进行赋值)。
.run()
run方法用于初始化全局的数据,仅对全局作用域起作用。
只执行一次,缓存起来 .link:function(scope,elm.attrs ,ctrl){}
scope:输出一个作用域,这个作用域是由Controller决定的,如果没有定义,是空值。
elm:输出一个元素数组,数组中的每个元素是调用directive的DOM树
attrs:输出一个Object, Object内是该DOM元素的各种属性方法
ctrl:输出一个Object,是对应的controller
转载于:https://www.cnblogs.com/qianmojing/p/6129824.html
angularjs 的笔记相关推荐
- 【AngularJs学习笔记五】AngularJS从构建项目开始
为什么80%的码农都做不了架构师?>>> #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...
- Build Your Own Angularjs 读书笔记(AngularJS牛逼的地方在于它内嵌了一个表达式到Function对象的编译器。。。当然还有DI框架)
Build Your Own Angularjs 读书笔记 目录 [隐藏] 1 项目配置 2 作用域 3 表达式与过滤器 4 模块与依赖注入 5 辅助函数 6 指令 项目配置[编辑] npm pack ...
- 【AngularJs学习笔记三】Grunt任务管理器
为什么80%的码农都做不了架构师?>>> #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...
- AngularJs学习笔记--unit-testing
原版地址:http://docs.angularjs.org/guide/dev_guide.unit-testing javascript是一门动态类型语言,这给她带来了很强的表现能力,但同时也使编 ...
- 《Build your own AngularJS》笔记分享
(初次写文章,请多多包涵) 我最近正在根据<Build your own angularJS>这本书从头开始实现了一遍AngularJS的框架.我把相关的源码和我的个人学习笔记放在了Git ...
- Angularjs进阶笔记(2)—自定义指令中的数据绑定
[摘要]有关自定义指令的scope参数,网上很多文章都在讲这3种绑定方式实现的效果是什么,但几乎没有人讲到底怎么使用,本篇希望聊聊到底怎么用这个话题. 一. 自定义指令 自定义指令,是Angularj ...
- AngularJS学习笔记(3)——通过Ajax获取JSON数据
通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...
- angularjs 学习笔记 简单基础
angularjs是谷歌公司的一个项目,弥补了hml在构建方面的不足,通过指令(directive)来扩展html标签,可以使开发者使用html来声明动态内容. angularjs主要用来开发单页应用 ...
- AngularJs学习笔记--Forms
控件(input.select.textarea)是用户输入数据的一种方式.Form(表单)是这些控件的集合,目的是将相关的控件进行分组. 表单和控件提供了验证服务,所以用户可以收到无效输入的提示.这 ...
- AngularJS学习笔记之一: AngularJS入门
2019独角兽企业重金招聘Python工程师标准>>> 一.AngularJS是什么? AngularJS是由Misko Hevery 和 Adam Abrons 两个人共同创建 ...
最新文章
- JRBeanCollectionDataSource cannot be resolved to a type 的原因
- 在ubuntu10.04上安装永中office2010
- 成语json_推荐一份中文数据,来试试汉字、词语、成语、歇后语在线检索
- TongJI Online Judge预赛(2): LOVE LETTER
- 689 Maximum Sum of 3 Non-Overlapping Subarrays
- android自带下拉阻尼动画,android 有阻尼下拉刷新列表的实现方法
- Progress Control控件的使用
- 说出来可能不信,现在酒厂都在招算法工程师
- 函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数
- html word 打开,HTML以Word或Excel打开
- 修改Android序列号(Serial Number)
- 电子学会2022年9月青少年软件编程(图形化)等级考试试卷(四级)答案解析
- allergo 命令
- Fingerprint has already been taken
- 磁盘配额超出 linux,Linux磁盘配额应用
- 许三多买了中石油--暴笑股民语录许三多
- 捆绑影视IP,玩跨界营销,你真学不会!
- 《云计算》shell高级编程-正则表达式
- a++ 和 ++a 的区别
- java心跳监控服务_JavaHeartBeat-应用服务器心跳检测