Angular中使用$watch监听object属性值的变化(详解)


Posted in Javascript onApril 24, 2017

Angular中的$watch可以监听属性值的变化,然后并做出相应处理。

常见用法:

$scope.$watch("person", function(n, o){
  //todo something...
})

 

但是对于一个对象中的某个属性值变化时,$watch似乎不管用了。

示例代码:

<body>
  <div ng-controller="mainCtrl">
    <input id="myText" type="text" ng-model="person.name"/>
    <h2>{{person}}</h2>
    <h2>Status: {{status}}</h2>
  </div>
  <script>
  angular.module('myApp', [])
    .controller('mainCtrl', function ($scope) {
      $scope.person = {
        name:"allen",
        age:21
      }

      $scope.$watch("person", function(n, o){
        //取消第一次加载时的监听响应
        if(n == o){
          return;
        }
        $scope.status = "changed"
      })
  })
</script>
</body>

 

我们为输入框绑定了person对象的name属性,然而当我们改变输入框的值时候,{{person}}确实改变了,然而并没有出现我们想要的change字符。

效果:

Angular中使用$watch监听object属性值的变化(详解)

 我们需要为$watch方法额外添加一个true参数,使之达到我们想要的效果:

$scope.$watch("person", function(n, o){
  if(n == o){
    return;
  }
  $scope.status = "changed";
},true)

$watch方法完整的使用方式是这样的:

$watch(watchExpression, [listener], [objectEquality]);

第一个是监听的参数名称,剩下两个可选参数分别为处理函数和是相等比较的方式,对于后者文档如是说:Compare for object equality using angular.equals instead of comparing for reference equality. 即是否使用angular.equals方法进行比较。

如此效果变为:

Angular中使用$watch监听object属性值的变化(详解)

以上这篇Angular中使用$watch监听object属性值的变化(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 利用Cookie记录用户登录信息
Dec 08 Javascript
jQuery Ajax使用 全解析
Dec 15 Javascript
按给定几率进行随机抽取的js代码
Dec 28 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
Apr 23 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
javascript实现校验文件上传控件实例
Apr 20 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
微信小程序 登录实例详解
Jan 16 Javascript
JavaScript基础之AJAX简单的小demo
Jan 29 Javascript
浅谈Angular4中常用管道
Sep 27 Javascript
微信小程序仿通讯录功能
Apr 09 Javascript
关于angular js_$watch监控属性和对象详解
Apr 24 #Javascript
Javascript操作dom对象之select全面解析
Apr 24 #Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 #Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 #jQuery
基于JavaScript实现类名的添加与移除
Apr 23 #Javascript
源码分析Vue.js的监听实现教程
Apr 23 #Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
Apr 23 #Javascript
You might like
php中的时间处理
2006/10/09 PHP
PHP简单系统查询模块代码打包下载
2008/06/07 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php实现的短网址算法分享
2014/06/20 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
php简单smarty入门程序实例
2015/06/11 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
Django中URLconf和include()的协同工作方法
2015/07/20 Python
Python日期的加减等操作的示例
2017/08/15 Python
python实现简易版计算器
2020/06/22 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
python 模块导入问题汇总
2021/02/01 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
学校司机岗位职责
2013/11/14 职场文书
自主实习接收函
2014/01/13 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
企业党员一句话承诺
2014/05/30 职场文书
房产协议书范本
2014/10/18 职场文书
销售员自我评价
2015/03/11 职场文书
《青山不老》教学反思
2016/02/22 职场文书