angular $watch学习(监听数组)
来源:互联网 发布:变电话号码的软件 编辑:程序博客网 时间:2024/04/30 14:54
文章参考 http://blog.csdn.net/u010451286/article/details/50635839
问题:
发现用上面两种方法去监视数组时,会发现即使数组的内容改变了,也没有触发到这个匿名函数?
分析:
watch函数其实是有三个变量的,第一个参数是需要监视的对象,第二个参数是在监视对象发生变化时需要调用的函数,实际上watch还有第三个参数,它在默认情况下是false。
当第三个参数是false时,其实watch函数监视的是数组的地址,而数组的内容的变化不会影响数组地址的变化,所以watch函数失灵了。
解决办法,就是在后面添加第三个参数为true就好。
例子:
$scope.items=[{a:1},{a:2}{a:3}];$scope.$watch('items',function(){...},true);
$watch 监听多个变量
例子:
//当count或page变化时,都会执行这个匿名函数$scope.count=1;$scope.page=1;$scope.$watch('count + page',function(){...});
$watch 函数的返回结果
在写代码的时候,有时会遇到要监视一个函数返回的结果是否变化的情况,所以查了一下$watch 监视函数的情况。
方法1:监视对象为“函数名()”的字符串,记得加“()”!
//未完成的任务个数$scope.unDoneCount = function() { var count = 0; angular.forEach($scope.todoList, function(todo) { count += todo.done ? 0 : 1; }); return count;};//单选影响全选部分$scope.$watch('unDoneCount()', function(nv) { $scope.isDoneAll = nv ? false : true;});
方法2:在监视对象中设置为匿名函数,返回要监视的函数的返回值(绕晕了…)
$scope.$watch(function(){ return $scope.unDoneCount();//不要忘了(),要执行的啊~}, function(nv) { $scope.isDoneAll = nv ? false : true;});
0 0
- angular $watch学习(监听数组)
- angular的watch监听
- ANGULAR JS WATCH监听使用
- angular js 入门2 $watch 监听事件
- Angular.js中使用$watch监听模型变化
- Angular中使用$watch监听object属性值的变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化 (转载)
- Angular $Watch
- angular $watch
- angular $watch
- angular的$watch 函数
- angular--$watch监视用法
- 工作学习记录--angularjs 中的$watch与$observe监听区别
- 项目:多用户留言系统——注册界面(前台界面)
- 【OpenCV笔记】视频稳定性和超分辨率及OpenCL调用GPU学习
- 20161218一件关于爸爸妈妈的小事
- $.getJSON异步请求和同步请求
- The method read(CharBuffer) from the type Reader refers to the missing type CharBuffer
- angular $watch学习(监听数组)
- HTTP中继(代理)、隧道相关介绍及简单Java实现
- IO流之字符流
- java反射之动态代理学习笔记
- SSH工作原理
- 树莓派禁止休眠设置
- IO流之字节流
- 大数据Spark “蘑菇云”行动第100课:Hive性能调优之企业级Join、MapJoin、GroupBy、Count、数据倾斜彻底解密和最佳实践
- codeforce 742 E. Arpa’s overnight party and Mehrdad’s silent entering (分食物||二分图染色+dfs)