对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的滚动新闻列表
Jun 19 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
Jan 23 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
Jun 06 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
Jun 20 Javascript
JavaScript实现带标题的图片轮播特效
May 20 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
Sep 05 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
javascript 中的try catch应用总结
Apr 01 Javascript
微信小程序开发图片拖拽实例详解
May 05 Javascript
微信小程序实现联动选择器
Feb 15 Javascript
浅谈发布订阅模式与观察者模式
Apr 09 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初始化对象和析构函数的简单实例
2014/03/11 PHP
19个Android常用工具类汇总
2014/12/30 PHP
javascript offsetX与layerX区别
2010/03/12 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
理论讲解python多进程并发编程
2018/02/09 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
python求最大值最小值方法总结
2019/06/25 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
python em算法的实现
2020/10/03 Python
Java的for语句中break, continue和return的区别
2013/12/19 面试题
公司JAVA开发面试题
2015/04/02 面试题
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
Java程序员面试90题
2013/10/19 面试题
师范应届生求职信
2013/11/15 职场文书
环境工程毕业生自荐信
2013/11/17 职场文书
怎样写演讲稿
2014/01/04 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
后备干部培训方案
2014/05/22 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
Nginx利用Logrotate实现日志分割
2022/05/20 Servers