浅谈Angular.js中使用$watch监听模型变化


Posted in Javascript onJanuary 10, 2017

$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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
表单提交前触发函数返回true表单才会提交
Mar 11 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
jQuery+AJAX实现无刷新下拉加载更多
Jul 03 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
Jq通过td获取同行其它列td的方法
Oct 05 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
vue获取dom元素注意事项
Dec 28 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 jQuery
vue.js的computed,filter,get,set的用法及区别详解
Mar 08 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
Jan 10 #Javascript
js实现背景图自适应窗口大小
Jan 10 #Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 #Javascript
jQuery使用ajax方法解析返回的json数据功能示例
Jan 10 #Javascript
ajax实现动态下拉框示例
Jan 10 #Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
Jan 10 #Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 #Javascript
You might like
博士208HAF收音机实习报告
2021/03/02 无线电
PHP中创建并处理图象
2006/10/09 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
酒店管理失职检讨书
2014/09/16 职场文书
门面房租房协议书
2014/12/01 职场文书
教师教育心得体会
2016/01/19 职场文书
导游词之青岛崂山
2019/12/27 职场文书