对angular 监控数据模型变化的事件方法$watch详解


Posted in Javascript onOctober 09, 2018

$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);

以上这篇对angular 监控数据模型变化的事件方法$watch详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
jQuery 获取多选框的值及多选框中文的函数
May 16 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
Feb 16 Javascript
微信小程序实现类似微信点击语音播放效果
Mar 30 Javascript
你知道JavaScript Symbol类型怎么用吗
Jan 08 Javascript
react实现复选框全选和反选组件效果
Aug 25 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 Javascript
jQuery实现动态向上滚动
Dec 21 jQuery
JS判断用户用的哪个浏览器实例详解
Oct 09 #Javascript
vue发送ajax请求详解
Oct 09 #Javascript
AngularJS 监听变量变化的实现方法
Oct 09 #Javascript
对angular4子路由&辅助路由详解
Oct 09 #Javascript
angular 未登录状态拦截路由跳转的方法
Oct 09 #Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
Oct 09 #Javascript
angularJS1 url中携带参数的获取方法
Oct 09 #Javascript
You might like
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP 转义使用详解
2013/07/15 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
php批量修改表结构实例
2017/05/24 PHP
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
JavaScript中输出标签的方法
2014/08/27 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
Python 将pdf转成图片的方法
2018/04/23 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
详解django中使用定时任务的方法
2018/09/27 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Python中包的用法及安装
2020/02/11 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Python装饰器结合递归原理解析
2020/07/02 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
入党申请书自我鉴定
2013/10/12 职场文书
如何写你的创业计划书
2014/01/07 职场文书
让世界充满爱观后感
2015/06/10 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL