浅谈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实现控制内容的向上向下滚动效果
Jun 26 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
Jul 04 Javascript
js生成的验证码的实现与技术分析
Sep 17 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
Sep 14 Javascript
HTML5实现微信拍摄上传照片功能
Apr 21 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
详解如何在你的Vue项目配置vux
Jun 04 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
Aug 31 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 Javascript
javascript实现摄像头拍照预览
Sep 30 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 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
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
PHP最常用的正则表达式
2017/02/13 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
用js重建星际争霸
2006/12/22 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
js断点调试经验分享
2017/12/08 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
Python描述器descriptor详解
2015/02/03 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
python 调用c语言函数的方法
2017/09/29 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Python-for循环的内部机制
2020/06/12 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
函授药学自我鉴定
2014/02/07 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技