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次,然后触发某个事件。

控制器代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

nbsp;html>        

         

                         改变次数:{{count}}-{{name}}        

        

登录后复制

运行效果如下:

前30次可以随意修改:

wKiom1OZYZSyIr6nAAAxzkizraE504.jpg

当修改了30次后,name固定为’已经大于30次了’:

wKioL1OZYcCQhyBBAAA0dnPxaic706.jpg

这就是watch的作用,model每一次改变时都会触发第二个函数。

(4)watch的第三个参数

当监听的为一个对象或者数组时,例如:

1

2

3

4

$scope.data = {        name :'李四',        count:20    }

登录后复制

此时data里的name和count都要监听,那么可以这么写:

1

2

3

    $scope.$watch('data',function(){     },true)

登录后复制

如果不加第三个参数,那么只会监听data,只有当data引用改变时才会触发。

因此当需要监听一些引用对象需要把第三个参数设置成true。

以上就是angular的$watch方法详解的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2909558.html

(0)
上一篇 2025年3月11日 04:23:07
下一篇 2025年3月11日 04:23:15

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 详解CSS属性值用法

    万维网联盟(w3c) 使用了一套特别的语法来定义 css 的w3c值,能让所有的 css 属性都用。如果你曾看过 css 规范,你可能已经见过这套语法了。就像  border-image-slice 登录后复制  的语法 ,让我们看看: =…

    2025年3月11日
    200
  • 详解css中border-image的使用方法

    border-image-source ord设置边框的ord的路径[none | ] p {   border: 20px solid #000;   border-image-source: url(border.png);} 登录后复…

    2025年3月11日
    200
  • 关于CSS 类选择符和ID选择符的区别详解

    本文主要介绍了css 类选择符和id选择符的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家更好的学习css 类选择符和id选择符。 类选择符 HTML代码: 登录后复制登录后复制 CSS代…

    2025年3月11日
    200
  • CSS选择符之子代选择符详解

    后代选择符用于选取一个标签的所有后代,包括子代和孙辈等;而子代选择符只选取指定父辈的子代标签(指定标签元素的第一代子元素)。本文主要介绍了详解css选择符之子代选择符的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小…

    2025年3月11日 编程技术
    200
  • CSS埋点统计详解

    本文主要介绍了css 埋点统计的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 当一个网站或者 App 的规模达到一定程度,需要分析用户在 App 或者网站的相应操作,则需要埋点统计…

    2025年3月10日
    200
  • CSS代码重构详解

    本文主要介绍css代码重构,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 1. 重构和架构 重构是指在不改变代码行为的前提下,重写代码,使其更加简洁、易于复用。 架构是指软件项目的各个不同部…

    编程技术 2025年3月10日
    200
  • CSS BFC原理及其应用详解

    本文主要和大家介绍10分钟理解bfc原理及其应用的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 一、常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制…

    2025年3月10日 编程技术
    200
  • Flex布局的可伸缩性详解

    flexibility Flex伸缩布局决定性的特性是让伸缩项目可伸缩,也就是让伸缩项目的宽度或高度自动填充剩余的空间。这可以以flex属性完成。一个伸缩容器会等比地按照各伸缩项目的 扩展比率 分配剩余空间,也会按照 收缩比率 缩小各项目以…

    2025年3月10日
    200
  • CSS内边距外边距代码详解

    本文主要和大家分享css之内边距与外边距,本文运用了多个实例与代码,希望能帮助到大家。 外边距: margin 左边距 margin-left:数值 | autoauto:即距离这个边最远的距离右边距: margin-right:数值 | …

    2025年3月10日 编程技术
    200
  • Css多行字符截取方法详解

    相信有很多同学在写前端页面的时候,都会遇到字符长了需要截取的问题,最简单的方法就是手动去截取,可这样又感觉太low了,今天晚上就来讲讲利用css进行字符的截取,不了解css是如何截取的同学可以和我们一起看看哦! 前言 最近在做响应式系统设计…

    2025年3月10日 编程技术
    200

发表回复

登录后才能评论