浅谈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 相关文章推荐
限制复选框的最大可选数
Jul 01 Javascript
javascript引用对象的方法
Jan 11 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
May 14 Javascript
加载 Javascript 最佳实践
Oct 30 Javascript
JS读取XML文件示例代码
Nov 15 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
Mar 03 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
讲解vue-router之命名路由和命名视图
May 28 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
Jan 20 Javascript
关于vue表单提交防双/多击的例子
Oct 31 Javascript
原生js实现自定义滚动条
Jan 20 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无刷新上传文件实现代码
2011/09/19 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
Python中装饰器的一个妙用
2015/02/08 Python
python中int与str互转方法
2018/07/02 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
比利时香水网上商店:NOTINO
2018/03/28 全球购物
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
简历中个人求职的自我评价模板
2013/11/29 职场文书
24岁生日感言
2014/01/13 职场文书
商场消防演习方案
2014/02/12 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
Golang 并发下的问题定位及解决方案
2022/03/16 Golang