全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Angular中的$watch方法详解

在$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小时内与您取得联系。