对angular 监控数据模型变化的事件方法$watch详解


Posted in Javascript onOctober 09, 2018

$watch简单使用

$watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。

$watch(watchExpression, listener, objectEquality);

每个参数的说明如下:

watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name}。

listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参数:newValue(新值), oldValue(旧值), scope(作用域的引用)

objectEquality:是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值, 那么你应该使用它

举个栗子:

$scope.name = 'hello';
 
var watch = $scope.$watch('name',function(newValue,oldValue, scope){
  console.log(newValue);
  console.log(oldValue);
});
 
 
$timeout(function(){
  $scope.name = "world";
},1000);

$watch性能问题

太多的$watch将会导致性能问题,$watch如果不再使用,我们最好将其释放掉。

$watch函数返回一个注销监听的函数,如果我们想监控一个属性,然后在稍后注销它,可以使用下面的方式:

var watch = $scope.$watch('someModel.someProperty', callback);
//...
watch();

还有2个和$watch相关的函数:

$watchGroup(watchExpressions, listener);
$watchCollection(obj, listener);

以上这篇对angular 监控数据模型变化的事件方法$watch详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
Mar 05 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
Dec 23 Javascript
JS循环遍历JSON数据的方法
Jul 08 Javascript
javascript中replace( )方法的使用
Apr 24 Javascript
6种javascript显示当前系统时间代码
Dec 01 Javascript
JavaScript程序开发之JS代码放置的位置
Jan 15 Javascript
怎么引入(调用)一个JS文件
May 26 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
Dec 06 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
Layui多选只有最后一个值的解决方法
Sep 02 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 Javascript
JS判断用户用的哪个浏览器实例详解
Oct 09 #Javascript
vue发送ajax请求详解
Oct 09 #Javascript
AngularJS 监听变量变化的实现方法
Oct 09 #Javascript
对angular4子路由&辅助路由详解
Oct 09 #Javascript
angular 未登录状态拦截路由跳转的方法
Oct 09 #Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
Oct 09 #Javascript
angularJS1 url中携带参数的获取方法
Oct 09 #Javascript
You might like
php a simple smtp class
2007/11/26 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
php短信接口代码
2016/05/13 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
Javascript 面向对象特性
2009/12/28 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python输出指定月份日历的方法
2015/04/23 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
python判断无向图环是否存在的示例
2019/11/22 Python
python字典按照value排序方法
2020/12/28 Python
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
应届生会计电算化求职信
2013/10/03 职场文书
酒店服务与管理毕业生求职信
2013/11/02 职场文书
绩效专员岗位职责
2013/12/02 职场文书
高中历史教学反思
2014/02/08 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
任命书格式范文
2015/09/22 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang