浅谈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和css代码压缩工具[附JAVA环境配置方法]
Apr 16 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
Sep 10 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
Oct 28 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
使用javascript实现判断当前浏览器
Apr 14 Javascript
javascript与Python快速排序实例对比
Aug 10 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
JS判断form内所有表单是否为空的简单实例
Sep 09 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
vue点击自增和求和的实例代码
Nov 06 Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 Javascript
JS实现九宫格拼图游戏
Jun 28 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
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
Array对象方法参考
2006/10/03 Javascript
js charAt的使用示例
2014/02/18 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
python django事务transaction源码分析详解
2017/03/17 Python
Python简单I/O操作示例
2019/03/18 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
中学生团员自我评价分享
2013/12/07 职场文书
《值日生》教学反思
2014/02/17 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
房屋所有权证明
2014/10/20 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
文明倡议书
2015/01/19 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL
浅谈如何保证Mysql主从一致
2022/03/13 MySQL