一.$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不添加第三个参数:

 
不添加第三个参数测试代码
 
没有输入时的结果
 
name输入框输入内容
 
 
年龄输入框输入内容
 

如果直接监听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

}

随机推荐

  1. SQLServer 高效 分页存储过程

    /********************************************************************** 参数:@PrimaryKey 主键,@OrderBy 排 ...

  2. ssh关闭服务关闭 nohup

    默认输出 # nohup cmd & 指定输出路径 # nohup cmd > mylog.out 2>&1 &

  3. Flink使用SideOutPut替换Split实现分流

    以前的数据分析项目(版本1.4.2),对从Kafka读取的原始数据流,调用split接口实现分流. 新项目决定使用Flink 1.7.2,使用split接口进行分流的时候,发现接口被标记为deprac ...

  4. pycharm 使用Git提交代码到Github

    pycharm 使用Git提交代码到Github pytharm 创建django项目,提交到github总是失败,在github创建项目拉下来后项目层级会多一层,为此查了一些资料,亲测如下方式可行. ...

  5. 简单使用:SpringBoot整合Redis

    1.导入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  6. 《高性能 Go 代码工坊》中译

    深入研究 Go 应用性能提升的英语系列文章,这里是中译 https://www.yuque.com/ksco/uiondt

  7. linux 的 expect 自动交互

    https://www.jianshu.com/p/0194cbd70d39 https://www.cnblogs.com/saneri/p/10819348.html  参考 expect是一个自 ...

  8. django-图形验证码(django-simple-captcha)

    在网站开发的登录页面中,经常会需要使用到图形验证码来验证.在Django中,django-simple-captcha库包提供了图形验证码的使用. django-simple-captcha的安装 p ...

  9. adb命令之解锁打卡

    adb devicesadb shell input keyevent 26                       按手机电源键adb shell input swipe 400 1080 40 ...

  10. 登录-退出,在T分钟实现BC次用户登录退出,单次登录-退出%90用户时间t,需要的并发用户(线程)

    聚合报告%90响应时间:%90用户响应时小于该值 2种理解方式: 一. 1s可完成的用户1/t: T分钟完成的用户T *(1/t); BC次用户需要的线程数Thread= BC/(T*(1/t)) = ...