浅谈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 相关文章推荐
js获取url参数的使用扩展实例
Dec 29 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
Aug 03 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
Angular整合zTree的示例代码
Jan 24 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
在vue项目中引入高德地图及其UI组件的方法
Sep 04 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 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
DIY实用性框形天线
2021/03/02 无线电
基于PHP创建Cookie数组的详解
2013/07/03 PHP
YII路径的用法总结
2014/07/09 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
Aptana调试javascript图解教程
2009/11/30 Javascript
jquery实用代码片段集合
2010/08/12 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
python中Genarator函数用法分析
2015/04/08 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
python追加元素到列表的方法
2015/07/28 Python
Python编写电话薄实现增删改查功能
2016/05/07 Python
Python如何实现文本转语音
2016/08/08 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
餐饮管理自我介绍信
2014/01/15 职场文书
教师节获奖感言
2015/07/31 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP