对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 相关文章推荐
统计出现最多的字符次数的js代码
Dec 03 Javascript
JavaScript中的View-Model使用介绍
Aug 11 Javascript
常用的jQuery前端技巧收集
Dec 24 Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 Javascript
javascript常用方法总结
May 14 Javascript
jquery实现删除一个元素后面的所有元素功能
Dec 21 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
BootStrap Tooltip插件源码解析
Dec 27 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
Jan 23 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
Oct 14 jQuery
vue如何将v-for中的表格导出来
May 07 Javascript
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
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编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
javascript some()函数用法详解
2014/11/13 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
python实现保存网页到本地示例
2014/03/16 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python模块的制作方法实例分析
2019/12/21 Python
多个python文件调用logging模块报错误
2020/02/12 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
先进党员事迹材料
2014/12/24 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫