Angular中的$watch方法详解
发布时间 - 2026-01-11 03:17:57 点击率:次在$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
# 第三个
# 小编
# 法会
# 就会
# 都要
# 在此
# 这就是
# 只会
# 第二个
# 给大家
# 可以使用
# 可选
# 会去
# 在前面
# 表单
# 不加
# 时才
# 所述
# 给我留言
# 感谢大家
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
打造顶配客厅影院,这份100寸电视推荐名单请查收
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel如何使用Sanctum进行API认证?(SPA实战)
如何在云主机上快速搭建多站点网站?
🚀拖拽式CMS建站能否实现高效与个性化并存?
轻松掌握MySQL函数中的last_insert_id()
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
js代码实现下拉菜单【推荐】
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
微信小程序 wx.uploadFile无法上传解决办法
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
使用spring连接及操作mongodb3.0实例
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
C#如何调用原生C++ COM对象详解
JS中对数组元素进行增删改移的方法总结
如何在局域网内绑定自建网站域名?
再谈Python中的字符串与字符编码(推荐)
canvas 画布在主流浏览器中的尺寸限制详细介绍
如何快速查询网址的建站时间与历史轨迹?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Laravel如何实现API资源集合?(Resource Collection教程)
如何确认建站备案号应放置的具体位置?
如何在Windows 2008云服务器安全搭建网站?
简历在线制作网站免费版,如何创建个人简历?
企业网站制作这些问题要关注
在Oracle关闭情况下如何修改spfile的参数
使用Dockerfile构建java web环境
微信小程序 HTTPS报错整理常见问题及解决方案
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
公司门户网站制作流程,华为官网怎么做?
怎么用AI帮你为初创公司进行市场定位分析?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Laravel如何使用Vite进行前端资源打包?(配置示例)
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
JS经典正则表达式笔试题汇总
HTML 中动态设置元素 name 属性的正确语法详解
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
原生JS获取元素集合的子元素宽度实例
公司网站制作价格怎么算,公司办个官网需要多少钱?
Laravel如何实现一对一模型关联?(Eloquent示例)
如何在万网自助建站中设置域名及备案?
如何在IIS7上新建站点并设置安全权限?
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
上一篇:AE Form插件入门指南
下一篇:签证需要多长时间能下来
上一篇:AE Form插件入门指南
下一篇:签证需要多长时间能下来

