vue watch监听对象及对应值的变化详解
如下所示:
var vm=new Vue({ data:{ a:1, b:{ c:1 } }, watch:{ a(val, oldVal){//普通的watch监听 console.log("a: "+val, oldVal); }, b:{//深度监听,可监听到对象、数组的变化 handler(val, oldVal){ console.log("b.c: "+val.c, oldVal.c);//但是这两个值打印出来却都是一样的 }, deep:true } } }) vm.a=2 vm.b.c=2
a是一个普通的值,当a的值变化时会被监听到,b是一个对象,不能直接像a那么写,需要深度监听才能捕捉到,但是当我想去捕捉b对象中某一个值的变化时却发现,打印出来的两个值是不一样的,如图:
这样就只能知道对象发生变化却不知道具体哪个值发生了变化,如果想监听对象某一个值得变化可以利用计算属性computed
var vm=new Vue({ data:{ b:{ c:1 } }, watch:{ newValue(val, oldVal){ console.log("b.c: "+val, oldVal); } }, computed: { newValue() { return this.b.c } } }) vm.b.c=2
用watch去监听computed计算过的值就可以直接知道是哪个对应的值发生了变化,结果如图:
以上这篇vue watch监听对象及对应值的变化详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
您可能感兴趣的文章:
- 用Vue.js实现监听属性的变化
- Vue监听数据对象变化源码
- 详解Vue监听数据变化原理
相关推荐
-
详解Vue监听数据变化原理
本人最近在学习Vue,从网上查询了很多关于Vue监听数据变化原理,稍微整理精简一下做下分享. 浅度监听 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>浅度监听</title> <meta name="viewport" content="width=device-wi
-
用Vue.js实现监听属性的变化
前言 创建 Vue 实例时,Vue 将遍历 data 的属性,通过 ES5 的 Object.defineProperty 将它们转为 getter/setter,在其内部 Vue 可以追踪依赖.通知变化. const vm = new Vue({ data: {foo: 1} // 'vm.foo' (在内部,同 'this.foo') 是响应的 }) 观察属性变化 Vue 的实例提供了 $watch 方法,用于观察属性变化. const vm = new Vue({ data: {foo:
-
Vue监听数据对象变化源码
监听数据对象变化,最容易想到的是建立一个需要监视对象的表,定时扫描其值,有变化,则执行相应操作,不过这种实现方式,性能是个问题,如果需要监视的数据量大的话,每扫描一次全部的对象,需要的时间很长.当然,有些框架是采用的这种方式,不过他们用非常巧妙的算法提升性能,这不在我们的讨论范围之类. Vue 中数据对象的监视,是通过设置 ES5 的新特性(ES7 都快出来了,ES5 的东西倒也真称不得新)Object.defineProperty() 中的 set.get 来实现的. 目标 与官方文档第一个例
-
vue watch监听对象及对应值的变化详解
如下所示: var vm=new Vue({ data:{ a:1, b:{ c:1 } }, watch:{ a(val, oldVal){//普通的watch监听 console.log("a: "+val, oldVal); }, b:{//深度监听,可监听到对象.数组的变化 handler(val, oldVal){ console.log("b.c: "+val.c, oldVal.c);//但是这两个值打印出来却都是一样的 }, deep:true }
-
Vue3中watch监听对象的属性值(监听源必须是一个getter函数)
目录 Vue3 中使用 watch 侦听对象中的具体属性 1.前言 2. 原因 3.watch源码分析 4.doWatch源码分析 5.总结 Vue3 中使用 watch 侦听对象中的具体属性 1.前言 <script lang="ts" setup> // 接受父组件传递的数据 const props = defineProps({ test: { type: String, default: '' } }) // 使用 watch 侦听 props 中的 test 属性
-
Angular中使用$watch监听object属性值的变化(详解)
Angular中的$watch可以监听属性值的变化,然后并做出相应处理. 常见用法: $scope.$watch("person", function(n, o){ //todo something... }) 但是对于一个对象中的某个属性值变化时,$watch似乎不管用了. 示例代码: <body> <div ng-controller="mainCtrl"> <input id="myText" type=&qu
-
angular 实时监听input框value值的变化触发函数方法
用angulajs + ionic 做了一个登陆页面.效果要通过监听输入框的变化来判断登陆按钮是否可点击.当至少一个输入框为空时登录按钮不可点击.一开始是用的jquery的方法做的,后来发现刷新当前页可以实现效果,但是当经过路由跳转后再回到登陆页后,方法就被执行了. 后来经过查找资料,利用angular.js的$watch方法解决了. 代码大概如下: $scope.input = {//初始化,避免ng-model绑定取不到值 Tel:'', Pwd:'' } $scope.$watch('in
-
angular5 子组件监听父组件传入值的变化方法
项目中遇到一个问题,就是在ngInit()中调用方法,只调用一次的问题,当父组件传值变化时,并不会再次执行. import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { NavController } from 'ionic-angular'; @Component({ selector: 'cs-img-lazy', templateUrl: 'cs-img-lazy.html' })
-
Android AsyncTask 后监听异步加载完毕的动作详解
Android 使用AsyncTask 后监听异步加载完毕的动作 AsyncTask 的使用方法网上有很多例子,使用起来也非常的方便.这里就不详细说具体的使用方法了,同学可以Google 一下,很多. 场景模拟 当我们在加载一个列表的时候,比如GridView ,这时候我们考虑到不阻塞UI的做法,一般会使用线程Thread .Timer 或者使用AsyncTask ,而这些操作都是在在后台另外开一个线程给我们找数据,具体得到的数据需要使用Handler 去更新UI,AsyncTask 也是一样使
-
利用信号如何监控Django模型对象字段值的变化详解
django信号系统 django自带一套信号发射系统来帮助我们在框架的不同位置传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将通知或信号(signals)推送给一组接受者(receivers).信号系统在我们多处代码与同一个事件相关是特别有用. 既然是信号系统,那么必须包含以下要素: 1. 发送者-谁发送了信号 2. 信号-发送的信号本身 3. 接收者-信号是发给谁的 Django 信号 (Signals) 的功能类似于 WordPress 的动作 (
-
Vue数据监听方法watch的使用
watch本身很容易理解, watch负责将视图中的数据与某个函数关联起来 当Vue视图中的数据变化时, 关联的函数会被执行 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>监听方法watch的使用</title> <script src="https://cdn.bootcss.com/
-
vue深度监听(监听对象和数组的改变)与立即执行监听实例
1.vue中监听对象数据属性值的改变,可以使用深度监听 data () { return { form: { status: '', cpufrequency: '', systemstacksize: '', scalabilityclass: '' } } }, watch: { form: { // 深度监听 handler(val, oldVal){ console.log('currentForm',val, oldVal) // 但是这两个值打印出来却都是一样的,因为它们的引用指向同
-
vue中watch监听对象中某个属性的方法
目录 immediate 和 handler deep 深度监听 以currentParams为例,监听selOrgId属性 immediate 和 handler watch 的用法有个特点,就是当值第一次绑定的时候,不会执行监听函数,只有值发生改变才会执行.如果我们需要在最初绑定值得时候也执行函数,就需要用到 immediate 属性. 'currentParams.selOrgId': { handler(newV, oldV) { console.log("watch", ne
随机推荐
- PHP提取数据库内容中的图片地址并循环输出
- 如何去掉文章里的 html 语法
- Eclipse中自动重构实现探索
- mysql 5.7 zip 文件在 windows下的安装教程详解
- JavaScript实现自动切换图片代码
- javascript 用原型继承来实现对象系统
- Ajax loading gif generator
- JAVA中String类与StringBuffer类的区别
- 地震避险自救常识
- Powershell脚本的4种执行权限介绍
- 修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库
- 微信小程序进行微信支付的步骤昂述
- JavaScript之Canvas_动力节点Java学院整理
- 微信小程序实现拖拽 image 触摸事件监听的实例
- 深入解读防火墙-深入防火墙记录(1)
- C++运行时获取类型信息的type_info类与bad_typeid异常
- java根据url抓取并生成缩略图的示例
- 浅谈webpack下的AOP式无侵入注入
- ReactNative 之FlatList使用及踩坑封装总结
- Android获取SHA1的方法