AngularJS实现一次监听多个值发生的变化


Posted in Javascript onAugust 31, 2016

一、$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()还有第三个参数,第三个参数是一个布尔类型,表示是否深度监听,深度监听的例子就是是否进行比较对象的属性。

这样我们就可以实现一次监听多个值的变化。

示例代码

var app=angular.module("watchApp",[])
      .controller("watchController",["$scope",function($scope){
         $scope.object={};
         $scope.object.one=$scope.one;
         $scope.object.one=$scope.one;
         $scope.$watch("object",function(){
            .....
          },true);
      }])

总结

以上就是关于AngularJS如何一次监听多个值发生变化的全部内容,大家都学会了吗?希望这篇文章的内容对大家的学习和工作能有所帮助,如果有疑问可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
js实现类似菜单风格的TAB选项卡效果代码
Aug 28 Javascript
JS更改select内option属性的方法
Oct 14 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
jQuery中get方法用法分析
Dec 07 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
May 26 Javascript
微信小程序中使用wxss加载图片并实现动画效果
Aug 13 Javascript
vue2使用keep-alive缓存多层列表页的方法
Sep 21 Javascript
vue-router定义元信息meta操作
Dec 07 Vue.js
利用Angularjs和bootstrap实现购物车功能
Aug 31 #Javascript
JavaScript String(字符串)对象的简单实例(推荐)
Aug 31 #Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
Aug 31 #Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
Aug 31 #Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
Aug 31 #Javascript
基于JavaScript实现点击页面任何位置返回
Aug 31 #Javascript
jquery datatable服务端分页
Aug 31 #Javascript
You might like
用缓存实现静态页面的测试
2006/12/06 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python 字符串中的字符倒转
2008/09/06 Python
Python与Redis的连接教程
2015/04/22 Python
用Python实现随机森林算法的示例
2017/08/24 Python
Python3 操作符重载方法示例
2017/11/23 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
python中如何设置代码自动提示
2020/07/15 Python
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
小学学校门卫岗位职责
2014/08/03 职场文书
计划生育汇报材料
2014/12/26 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫