在$apply方法中提到过脏检查,首先apply方法会触发evel方法,当evel方法解析成功后,会去触发digest方法,digest方法会触发watch方法。

(1)$watch简介
在digest执行时,如果watch观察的的value与上一次执行时不一样时,就会被触发。
AngularJS内部的watch实现了页面随model的及时更新。
$watch方法在用的时候主要是手动的监听一个对象,但对象发生变化时触发某个事件。
(2)watch方法用法
$watch(watchFn,watchAction,deepWatch)
watchFn:angular表达式或函数的字符串
watchAction(newValue,oldValue,scope):watchFn发生变化会被调用
deepWatch:可选的布尔值命令检查被监控的对象的每个属性是否发生变化
$watch会返回一个函数,想要注销这个watch可以使用函数
(3)例子
在前面的例子中,当name的表单改变30次,然后触发某个事件。
控制器代码如下:
var firstController = function ($scope){
$scope.name='张三';
$scope.count=0;
// 监听一个model 当一个model每次改变时 都会触发第2个函数
$scope.$watch('name',function(newValue,oldValue){
++$scope.count;
if($scope.count > 30){
$scope.name = '已经大于30次了';
}
});
}
html代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div ng-app="">
<div ng-controller="firstController">
<input type="text" value="" ng-model="name"/>
改变次数:{{count}}-{{name}}
</div>
</div>
<script type="text/javascript" src="app/index.js"></script>
<script type="text/javascript" src="../../vendor/angular/angularjs.js"></script>
</body>
</html>
运行效果如下:
前30次可以随意修改:
当修改了30次后,name固定为'已经大于30次了':
这就是watch的作用,model每一次改变时都会触发第二个函数。
(4)watch的第三个参数
当监听的为一个对象或者数组时,例如:
$scope.data = {
name :'李四',
count:20
}
此时data里的name和count都要监听,那么可以这么写:
$scope.$watch('data',function(){
},true)
如果不加第三个参数,那么只会监听data,只有当data引用改变时才会触发。
因此当需要监听一些引用对象需要把第三个参数设置成true。
总结
以上所述是小编给大家介绍的Angular中的$watch方法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# angular
# $watch
# AngularJS中$apply方法和$watch方法用法总结
# AngularJs $parse、$eval和$observe、$watch详解
# AngularJS中$watch和$timeout的使用示例
# AngularJS中的$watch()
# $digest()和$apply()区分
# 浅谈angular.js中实现双向绑定的方法$watch $digest $apply
# 第三个
# 小编
# 法会
# 就会
# 都要
# 在此
# 这就是
# 只会
# 第二个
# 给大家
# 可以使用
# 可选
# 会去
# 在前面
# 表单
# 不加
# 时才
# 所述
# 给我留言
# 感谢大家
相关文章:
利用JavaScript实现拖拽改变元素大小
如何确认建站备案号应放置的具体位置?
如何快速搭建安全的FTP站点?
如何配置WinSCP新建站点的密钥验证步骤?
如何快速重置建站主机并恢复默认配置?
建站之星安装后如何自定义网站颜色与字体?
Android自定义控件实现温度旋转按钮效果
免费视频制作网站,更新又快又好的免费电影网站?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
网站制作需要会哪些技术,建立一个网站要花费多少?
建站之星免费模板:自助建站系统与智能响应式一键生成
重庆网站制作公司哪家好,重庆中考招生办官方网站?
在线教育网站制作平台,山西立德教育官网?
建站主机选购指南:核心配置优化与品牌推荐方案
韩国服务器如何优化跨境访问实现高效连接?
如何基于云服务器快速搭建网站及云盘系统?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Thinkphp 中 distinct 的用法解析
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在阿里云虚拟主机上快速搭建个人网站?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
,购物网站怎么盈利呢?
西安大型网站制作公司,西安招聘网站最好的是哪个?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
郑州企业网站制作公司,郑州招聘网站有哪些?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
模具网站制作流程,如何找模具客户?
高端云建站费用究竟需要多少预算?
深圳网站制作的公司有哪些,dido官方网站?
如何选择高效响应式自助建站源码系统?
如何在阿里云香港服务器快速搭建网站?
,怎么在广州志愿者网站注册?
制作销售网站教学视频,销售网站有哪些?
如何高效利用亚马逊云主机搭建企业网站?
如何在阿里云服务器自主搭建网站?
如何快速生成ASP一键建站模板并优化安全性?
如何确保FTP站点访问权限与数据传输安全?
如何零基础开发自助建站系统?完整教程解析
如何有效防御Web建站篡改攻击?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何用AWS免费套餐快速搭建高效网站?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
打鱼网站制作软件,波克捕鱼官方号怎么注册?
如何快速搭建FTP站点实现文件共享?
开源网站制作软件,开源网站什么意思?
*请认真填写需求信息,我们会在24小时内与您取得联系。