浅谈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 相关文章推荐
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
Sep 15 Javascript
用JS控制回车事件的代码
Feb 20 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
vue2.0开发实践总结之疑难篇
Dec 07 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
浅谈vue-lazyload实现的详细过程
Aug 22 Javascript
js实现购物车功能
Jun 12 Javascript
Vue页面跳转动画效果的实现方法
Sep 23 Javascript
AngularJS 多指令Scope问题的解决
Oct 25 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 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
accesskey 提交
2006/06/26 Javascript
use jscript with List Proxy Server Information
2007/06/11 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
Python导入oracle数据的方法
2015/07/10 Python
Python 错误和异常代码详解
2018/01/29 Python
Python中Numpy mat的使用详解
2019/05/24 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
keras 多gpu并行运行案例
2020/06/10 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
晚宴邀请函范文
2014/01/15 职场文书
大型会议接待方案
2014/03/01 职场文书
婚内房产协议书范本
2014/10/02 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
2014年预算员工作总结
2014/12/05 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python