对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 相关文章推荐
用JavaScript实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
JavaScript 中的日期和时间及表示标准介绍
Aug 21 Javascript
css样式标签和js语法属性区别
Nov 06 Javascript
javascript读写json示例
Apr 11 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
Aug 19 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 Javascript
canvas绘制多边形
Feb 24 Javascript
爬虫利器Puppeteer实战
Jan 09 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 Javascript
将RGB值转换为灰度值的简单算法
Oct 09 Javascript
JS数组的高级使用方法示例小结
Mar 14 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
php扩展ZF――Validate扩展
2008/01/10 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
Python合并多个装饰器小技巧
2015/04/28 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
学习雷锋倡议书
2014/04/15 职场文书
班长竞选演讲稿
2014/04/24 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
护士求职自荐信
2015/03/25 职场文书
高中地理教学反思
2016/02/19 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS