文档章节

谈$watch()

own1991
 own1991
发布于 2017/08/28 14:32
字数 293
阅读 5
收藏 0
点赞 0
评论 0

主要监听某个值的变化,触发函数。在controller:$scope.$watch()  directive:$scope.$watch()

apply()——>digest()——>watch()

$watch(watchFn,watchAction,deepWatch)

watchFn:angular表达式或函数的字符串被监听‘字符串’

watchAction(newValue,oldValue,scope):watchFn发生变化会被调用 触发函数

deepWatch:可选的布尔值命令检查被监控的对象的每个属性是否发生变化 布尔值

<p>{{message}}</p><input ng-model="message" />
link:function(scope, element, attrs){
           scope.$watch('message', function(){
           console.log("dd")
            })

控制器里面:

<body ng-controller="MainCtrl">
    <input ng-model="name" />
    Name updated: {{updated}} times.
</body>
app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {
  $scope.name = "Angular";
  
  $scope.updated = -1;
  
  $scope.$watch('name', function() {
    $scope.updated++;
  });
});

运行

还回参数里面俩参数newValue, oldValue,当监听对象是不是字符串,如下面这样需要加 true

<body ng-controller="MainCtrl">
    <input ng-model="user.name" />
    Name updated: {{updated}} times.
  </body>
app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {
  $scope.user = { name: "Fox" };
  
  $scope.updated = 0;
  
  $scope.$watch('user', function(newValue, oldValue) {
    if (newValue === oldValue) { return; }
    $scope.updated++;
  }, true);
});

运行  运行对

项目案例:

var uploadFile = (['$stateParams', 'mzServer', function ($stateParams, mzServer) {
    return {
        restrict: 'EA',
        require: "ngModel",
        link: function (scope, element, attrs, ngModelController) {
            scope.$watch(attrs.ngModel, function (data) {
                if (attrs.required) {
                    ngModelController.$setValidity('uploadFile', false);
                }
                if (mzServer.isEmptyOrNull(data) || angular.isUndefined(data)) {
                    $(element).fileinput('refresh', { initialPreview: ["/images/no_img.jpg"], initialPreviewAsData: true, });
                }
                else {
                    var arrimg = [];
                        arrimg.push(attrs.readimg +"/"+ data);
                    $(element).fileinput('refresh', { initialPreview: arrimg, initialPreviewAsData: true, });
                    if ($stateParams.OpType.toLowerCase() == "query") {
                        $('.file-caption-main').hide();
                    }

                    ngModelController.$setValidity('uploadFile', true);
                }
            });

 

 

参考:http://xlows.blog.51cto.com/5380484/1425445

 

© 著作权归作者所有

共有 人打赏支持
own1991
粉丝 0
博文 61
码字总数 29561
作品 0
黄浦
谈谈angularjs中$watch,$apply,$digest

大家都是到angularJS中非常屌的一个性能,数据双向绑定,这就意味着view中的数据发生任何变化的时候,这个变化也会相应的反映到scope上,也就是说scope的模型会动态更新。所以有时候我们的需...

邪气小生
2015/12/27
501
0
iOS逆向第四篇(dylib动态库注入和重签名打包)

在以前的文章中已经介绍过砸壳、Tweak创建动态库等逆向开放相关知识,今天主要介绍怎么把一个dylib的动态库注入到第三方项目中、重签名打包实现多开功能。 介绍这部分是为了接下来微信自动抢...

LvesLi
2017/11/16
0
0
apache StopWatch基本使用

pom: <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> org.apache.commons.lang.time.StopWatch (1) privat......

Atom_me
2015/07/16
817
0
WatchOS系统开发大全(2)-WatchApp运行原理

WatchOS与iPhone交互框架 1.1-简介 我们都知道,一个App主要由两部分组成,一个是界面UI部分,一个是代码逻辑部分 在Wach OS1.0的Watch App中,界面UI是编译在App Watch上,代码逻辑编译在i...

u013263917
2017/07/27
0
0
pyinotify ERROR] add_watch: cannot watch

[2017-11-10 17:14:40,612 pyinotify ERROR] add_watch: cannot watch /usr/local/lib/python2.7/dist-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo WD=-1, Errno=No s......

Love轩轩
2017/11/10
0
0
AppleWatch开发入门一——Watch的开发思路与应用框架

AppleWatch开发入门一——Watch的开发思路与应用框架 一、引言 Apple Watch无疑是apple在智能手表领域的一次革命,如何在Watch上开发出实用且具有美感的应用,是iOS开发者们开始思考的一个问...

珲少
2015/10/13
994
1
Watch Me Code, Episode 8

In Episode 7 of "Watch Me Code," we parsed some dates by scraping HTML, not content with just scraping a date, we continue scraping more details from various HTML pages in the G......

Stephen Connolly
2017/12/20
0
0
Watch Me Code, Episode 7

What do software engineers hate? Parsing strings into dates and scraping HTML! After the setting up our classpath in Episode 6 of "Watch Me Code," we start to tackle writing the......

Stephen Connolly
2017/12/12
0
0
Watch Me Code, Episode 9 [Video]

At the end of Episode 8, we had found some bugs. The plugin code was not being called at all, so it's time to call in our investigative skills and try and figure out what is goi......

Stephen Connolly
2017/12/26
0
0
Zookeeper笔记二:Watches

Watch event只触发一次; Watch event是由服务端发送给客户端的(异步发送),并且提供一顺序保证:即当为某个数据的改变设置了Watch,客户端不会在Watch事件触发之前看到这个改变; Watch ...

囚兔
2016/10/17
20
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
11分钟前
0
0
upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
21分钟前
0
0
Python解析配置文件模块:ConfigPhaser

import configparser as pa# [SectionA]# a = aa# b = bb# c = cc# [SectionB]# optionint = 1# optionfloat = 1.1# optionstring = string#https://www.cnblogs.com/a......

易野
28分钟前
0
0
Java基础——面向对象

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Object的方法: clone() Object 克隆 to Strin...

凯哥学堂
30分钟前
0
0
rabbitmq学习记录(八)消息发布确认机制

RabbitMQ服务器崩了导致的消息数据丢失,已经持久化的消息数据我们可以通过消息持久化来预防。但是,如果消息从生产者发送到vhosts过程中出现了问题,持久化消息数据的方案就无效了。 Rabbit...

人觉非常君
34分钟前
0
0
毕业5年,我是怎么成为年薪30W的运维工程师

#转载# 我在大学读的是计算机专业,但大学毕业之后,进入到一家私企进行工作,工作的内容类似于网管,会经常的去修电脑,去做水晶头等内容。刚开始工作,也没想太多,最想的是丰富自己的工作...

Py爱好
41分钟前
1
0
大数据基础知识,大数据学习,涉及的知识点

一、什么是大数据 一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流 转、多样的数据类型和价值密度低四大特征。...

董黎明
57分钟前
0
0
Linux CentOS 7上安装极点五笔

话说几天前在新买的惠普笔记本上成功地安装了Linux CentOS 7操作系统、Nvidia Quandro P600驱动程序及X Window,并在VMware下安装Red Hat教学环境,彻底跳出Windows的苦海,但仍然有一件事不...

大别阿郎
今天
17
0
2018年7月20日集群课程

一、集群介绍 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 ...

人在艹木中
今天
0
0
spark开发机中调试snappy

目的 在Idea中的点击运行,使spark可以直接读取snappy 自己编译hadoop,以支持snappy的压缩。 自己编译的目的就是要得到支持snappy文件读写的动态链接库。如果可以在网上下载,可以跳过自行编...

benny周
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部