微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

一、$watch简单使用

$watch一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。

rush:js;"> $watch(watchExpression,listener,objectEquality);

每个参数的说明如下:

watchExpression:

监听的对象,它可以是一个angular表达式如'name',或函数function(){return $scope.name}

listener:

watchExpression变化时会被调用函数或者表达式,它接收3个参数:newValue(新值),oldValue(旧值),scope(作用域的引用)

objectEquality:

是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值,那么你应该使用它

举个栗子:

rush:js;"> $scope.name = 'hello';

var watch = $scope.$watch('name',function(newValue,oldValue,scope){

console.log(newValue);

console.log(oldValue);

});

$timeout(function(){

$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.name = "world";

},1000);

二、监听多个值的变化

大家通常遇到的情况为通过$watch()一次监听一个值的变化,当然这种时候满足绝大部分情况。但是通过阅读官网对于$watch()的解释,$watch()还有第三个参数,第三个参数是一个布尔类型,表示是否深度监听,深度监听的例子就是是否进行比较对象的属性

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

示例代码

rush:js;"> 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如何一次监听多个值发生变化的全部内容,大家都学会了吗?希望这篇文章内容对大家的学习和工作能有所帮助,如果有疑问可以留言交流,谢谢大家对编程之家的支持

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐