$scope里的$watch方法
一.$watch的作用
监听model,如果model发生变化,则触发某些事情。
二.$watch的格式
$scope. $watch(watchFn,watchAction,deepWatch);
解释:
watchFn:表示一个,angular表达式或者函数的字符串。
watchAction:watchFn发生变化的时候触发此函数,参数为一个function。
deepWatch:可选的布尔值命令,检查被监控的每个属性是否发证变化,只对监听对象时有用,如果第三个参数为true则被监听对象的每一个属性变更都会触发第二个参数function,如果为false则只检查监听对象的对象引用地址,如果属性变了,但是引用地址没变,不会触发,除非你改为了其他对象。
三.实例
1.$watch 单一的变量
对于普通的变量时,如数字,字符串等,直接如下写是可以监视到变量的变化,并执行相应的函数的。
$scope.count=1;
$scope.$watch('count',function(){
...
});
2.$watch 多个变量
对于多个变量的监视变化,执行同一函数的话,可以将这几个变量转为字符串,以‘+’号隔开来进行监视
//当count或page变化时,都会执行这个匿名函数
$scope.count=1;
$scope.page=1;
$scope.$watch('count + page',function(){
...
});
3.$watch对象或数组
3.1不添加第三个参数:






如果直接监听user是改变输入框是不会有值的。
3.2添加第三个参数:

不管哪个输入框的值发生改变都会有弹框出现。
4.$watch 函数的返回结果
在写代码的时候,有时会遇到要监视一个函数返回的结果是否变化的情况,所以查了一下$watch 监视函数的情况。
$scope.todoList = []; //可改变
$scope.fun=function(){
var count =0;
angular.forEach($scope.todoList,function(todo){
count += todo.done ?0:1;
});
return count;
};
$scope.$watch('fun()',function(data){
console.log(data); //获取到数据
});
5.取消$watch
var fun=$scope.$watch('todoList',function(){
//调用fun()取消这个watch
fun();
});
自己项目中的用法:
$scope.$watch(angular.bind(vm, function () {
// do somethin监听某个值的变化。
}), nextFunction, true);
function nextFunction(oldValue,newValue){
//do something
}
随机推荐
- jQuery遍历 - 过滤first(),last()和eq()使用
jQuery遍历 - 过滤最基本的过滤方法是first(),last()和eq(),它们允许您根据元素在一组元素中的位置选择特定元素. 其他过滤方法(如filter()和not())允许您选择与特定条 ...
- Android源码分析(一)-----如何快速掌握Android编译文件
一 : Android.mk文件概述 主要向编译系统指定相应的编译规则.会被解析一次或多次.因此尽量减少源码中声明变量,因为这些变量可能会被多次定义从而影响到后面的解析.这个文件的语法会把源代码组织成 ...
- BeautyWe.js 一套专注于微信小程序的开发范式
摘要: 小程序框架... 作者:JerryC 原文:BeautyWe.js 一套专注于微信小程序的开发范式 Fundebug经授权转载,版权归原作者所有. 官网:beautywejs.com Repo ...
- python从入门到放弃之进程锁lock
# ### lock (互斥锁)"""# 应用在多进程当中# 互斥锁lock : 互斥锁是进程间的get_ticket互相排斥进程之间,谁先抢占到资源,谁就先上锁,等到解 ...
- linux(03)基础系统优化
Linux之基础系统优化 Linux基础系统优化 >>> https://www.cnblogs.com/pyyu/p/9355477.html Linux的网络功能相当强悍,一时之 ...
- Linux(CentOS)上,安装了Apache(httpd)后,其他的电脑无法访问的原因
今天试了下在虚拟机上利用CentOS系统的yum命令安装好了httpd(apache2.2),然后在windows系统下访问此虚拟机的ip地址,却访问不了. 因为前段时间有知道过iptable的限制, ...
- 201871010126 王亚涛 《面向对象程序设计 Java》 第十五周学习总结
内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11 ...
- HTML与CSS学习笔记(1)
1.web三大核心技术? HTML CSS JavaScript 2.HTML基本机构和属性 HTML:超文本 标记 语言 超文本:文本内容+非文本内容(图片.视频.音频等) 标记:<单词> ...
- vue项目实基础到实战,入门到精通,移动商城
最近发现许多的朋友都问我有没有vue项目的案例学习,最近正在学习vue,在这可以分享给大家,希望大家学有所成,相互交流共同进步,先不说了,吃个宵夜. 就这么多吧,需要的可以在下方留言或者加qq:116 ...
- java中利用POI读写excel2007需要导入的jar
1.下载POI模块:http://poi.apache.org/download.html 2.解压并导入以下包: 导入不会时会报错.