浅谈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计算两个marker之间的距离(Google Map V3)
Apr 26 Javascript
首页图片漂浮效果示例代码
Jun 05 Javascript
详细分析JavaScript函数定义
Jul 16 Javascript
iframe跨域通信封装详解
Aug 11 Javascript
javascript匀速运动实现方法分析
Jan 08 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
Jun 25 Javascript
微信小程序实现倒计时补零功能
Jul 09 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
Nov 06 Javascript
一篇文章带你浅入webpack的DLL优化打包
Feb 20 Javascript
前端如何实现动画过渡效果
Feb 05 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
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
node.js中的path.join方法使用说明
2014/12/08 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
解决Python3下map函数的显示问题
2019/12/04 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Python基于locals返回作用域字典
2020/10/17 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
美术毕业生求职信
2014/02/25 职场文书
白岩松演讲
2014/05/21 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
代码复现python目标检测yolo3详解预测
2022/05/06 Python