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

发布时间 - 2026-01-11 00:47:37    点击率:

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字符。

效果:

 我们需要为$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属性值的变化(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# watch监听object的值  # angular 实时监听input框value值的变化触发函数方法  # angular5 子组件监听父组件传入值的变化方法  # 在Angular中如何监听某个值的变化  # 给大家  # 输入框  # 第一个  # 是这样  # 用了  # 希望能  # 分别为  # 可选  # 当我们  # 如是说  # 这篇  # 使之  # 定了  # 小编  # 大家多多  # 象中  # 加载  # 文档  # 改变了  # nbsp 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现事件和监听器?(Event & Listener实战)  Python面向对象测试方法_mock解析【教程】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  如何撰写建站申请书?关键要点有哪些?  如何基于云服务器快速搭建个人网站?  音乐网站服务器如何优化API响应速度?  米侠浏览器网页背景异常怎么办 米侠显示修复  JS去除重复并统计数量的实现方法  Android GridView 滑动条设置一直显示状态(推荐)  什么是javascript作用域_全局和局部作用域有什么区别?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  公司门户网站制作流程,华为官网怎么做?  个人摄影网站制作流程,摄影爱好者都去什么网站?  教你用AI润色文章,让你的文字表达更专业  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何快速搭建二级域名独立网站?  香港服务器部署网站为何提示未备案?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何实现建站之星域名转发设置?  JavaScript实现Fly Bird小游戏  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  在centOS 7安装mysql 5.7的详细教程  高端建站三要素:定制模板、企业官网与响应式设计优化  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在建站之星绑定自定义域名?  Android仿QQ列表左滑删除操作  详解MySQL数据库的安装与密码配置  太平洋网站制作公司,网络用语太平洋是什么意思?  如何用VPS主机快速搭建个人网站?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何在腾讯云免费申请建站?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  如何选择PHP开源工具快速搭建网站?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  魔方云NAT建站如何实现端口转发?  Android实现代码画虚线边框背景效果  JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Swift中switch语句区间和元组模式匹配