一.$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. C++调用linux命令并获取返回值

    qt中封装了相关的方法, 但是因为我的命令中用到了管道命令, 出现了非预期结果, 所有改用了linux系统原生的方法. 下边是一个判断某进程是否存在的例子. 当前存在一个问题,当linux返回多行时, ...

  2. Unable to connect to web server 'IIS Express'(无法连接到Web服务器“IIS Express”)的解决方式-Jexus Manager

    在运行微软示例工程eShopOnWeb时候, 在经过一段时间再运行启动报Error "Unable to connect to web server 'IIS Express'"  ...

  3. 海关单一窗口程序出现网络/MQ问题后自动修复处理

    单一窗口切换了2年多了,由于RabbitMQ或者网络的不稳定,或者升级或者网络调整,等等诸多问题导致了海关单一窗口程序会不定期的出现文件及回执自动处理的作业停止的问题. 最近终于想明白了,把日志监控起 ...

  4. Java编程基础——数组和二维数组

    Java编程基础——数组和二维数组 摘要:本文主要对数组和二维数组进行简要介绍. 数组 定义 数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器. 数组是一种引用类型,用于保存一组相同类 ...

  5. 运算符 &(与运算)、|(或运算)、^(异或运算)

    按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算. 运算规则:0&0=0;  0&1=0;   1&0=0;    1&1=1; 按位或运算符( ...

  6. 命令 docker rm | docker rmi | docker prune 的差异

    区别: docker rm : 删除一个或多个 容器 docker rmi : 删除一个或多个 镜像 docker prune : 用来删除不再使用的 docker 对象 一.docker rm 命令 ...

  7. CTF必备技能丨Linux Pwn入门教程——stack canary与绕过的思路

    Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...

  8. Linux Tools 之 iostat 工具总结

    iostat是Linux中被用来监控系统的I/O设备活动情况的工具,是input/output statistics的缩写.它可以生成三种类型的报告: CPU利用率报告 设备利用率报告 网络文件系统报 ...

  9. Centos7安装宝塔控制面板

    目录 宝塔面板安装和使用图文教程 1,通过ssh工具登录服务器 2,安装宝塔面板 2,登录宝塔面板 3,设置宝塔面板 3.1,首先我们进入面板设置 3.2,更改面板端口 3.3,绑定域名 3.4,绑定 ...

  10. Confluence 6.9.0 安装

    平台环境:centos 7.6 数据库版本:mysql-5.7.26,提前安装好,安装步骤略. 软件版本:Confluence6.9.0 所需软件:提前下载到本地电脑 atlassian-conflu ...