vue watch监听对象

一、watch的API

vm.$watch( expOrFn, callback, [options] )

  • 参数

    • {string | Function} expOrFn
    • {Function | Object} callback
    • {Object} [options]
      • {boolean} deep
      • {boolean} immediate
  • 返回值{Function} unwatch

  • 用法

    观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。

  • 注意:在变异 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变异之前值的副本。

  • 示例:

 

// 键路径
vm.$watch('a.b.c', function (newVal, oldVal) {// 做点什么
})// 函数
vm.$watch(function () {return this.a + this.b},function (newVal, oldVal) {// 做点什么}
)
var unwatch = vm.$watch('a', cb)
// 之后取消观察
unwatch()
  • vm.$watch 返回一个取消观察函数,用来停止触发回调:

  • 选项:deep

    为了发现对象内部值的变化,可以在选项参数中指定 deep: true 。注意监听数组的变动不需要这么做。

vm.$watch('someObject', callback, {deep: true
})
vm.someObject.nestedValue = 123
// callback is fired
  • 选项:immediate

    在选项参数中指定 immediate: true 将立即以表达式的当前值触发回调:

vm.$watch('a', callback, {  immediate: true})
// 立即以 `a` 的当前值触发回调

 

二、watch的定义

 

(1)监听data的变量的值变化

{data: function(){return {key:{a:'b'}}},watch: {key(newval, oldVal) {}}
}

(2)监听data的变量的属性值变化

A.字符串形式

{data: function(){return {key:{a:'b'}}},watch: {'key.a'(newval, oldVal) {}}
}

B.computed模式

{data: function(){return {key:{a:'b'}}},computed: {a() {return this.key.a}}, watch:{a(newValue, oldValue) {}} 
}

(3)监听vue的data的变量的变化(包括属性值的变化)

{data: function(){return {key:{a:'b'}}},watch: {key: {handler(newValue, oldValue) {},deep: true}} 
}

(4)监听vue的data的变量值变化(立即触发)

{data: function(){return {key:{a:'b'}}},watch: {key: {handler(newValue, oldValue) {},immediate: true}} 
}

 

注意:在watch的监听对象或者监听对象的属性上使用lamda表达式赋值,this指向的不是Vue的实例对象,而是Vue的原始对象。

参考:

https://cn.vuejs.org/v2/api/#vm-options

https://blog.csdn.net/Claire_cz/article/details/79098237

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从.NET和Java之争谈IT这个行业

一、有些事情难以回头 开篇我得表名自己的立场:.NET JAVA同时使用者,但更加偏爱.NET.原因很简单 1.NET语言更具开放性,从开源协议和规范可以看出; 2.语言更具优势严谨; 3.开发工具VS更具生产力; 然而 1.Java,C#的职位比率在4:1,虽然这不是什么问题,因为求职竞争的比例更大(JAVA…

权限管理系统2_权限表,权限模块表

CREATE TABLE sys_acl_module ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 权限模块id, name varchar(20) NOT NULL DEFAULT COMMENT 权限模块名称, parent_id int(11) NOT NULL DEFAULT 0 COMMENT 上级权限模块id, level varchar(200) NOT NULL DEFAULT COMMENT …

struts基本概念(2)

一、struts使用步骤:1.导包(基本)2.web.xml配置struts控制器 C3.页面开发 V4.处理类开发 M()5.配置struts.xml 6.部署运行二、struts访问session(servlet )1.解耦方式:ActionContext Map 2.耦合方式:ServletActionContextHttpSession 三…

vue2.0 $router和$route的区别

转载自 vue2.0 $router和$route的区别在vue2.0里页面参数是 this.$route.query或者 this.$route.params 接收router-link传的参数。 在路由跳转的时候除了用router-link标签以外需要在script标签在事件里面跳转,所以有个方法就是在script标签里面写this.$router.pu…

基于Bootstrap 3.x的免费高级管理控制面板主题:AdminLTE

AdminLTE 是一个基于Bootstrap 3.x的免费高级管理控制面板主题。AdminLTE - 是一个完全响应式管理模板。基于Bootstrap3框架。高度可定制的,易于使用。适合从小型移动设备到大型台式机很多的屏幕分辨率。 在线预览: http://almsaeedstudio.com/preview/ AdminLTE 在…

Spring MVC开发环境搭建

现在springMVC是非常常用的框架,很多公司的内部都是使用这个框架 打开maven查询jar包的网址 mvnrepository.com 测试是否成功 war:只是运行 war expord: 运行且调试

Redola.Rpc 的一个小目标:20000 tps

Redola.Rpc 的一个小目标 Redola.Rpc 的一个小目标:20000 tps。 Concurrency level: 8 threadsComplete requests: 20000 Time taken for tests: 0.886 secondsTime per request: 0.044 ms (avg)Requests per second: 22573 [#/sec] (avg) Concurrency level: 8 thr…

vue 动态修改路由参数

转载自 vue 动态修改路由参数 import merge from webpack-merge;修改原有参数 this.$router.push({query:merge(this.$route.query,{maxPrice:630}) })新增一个参数: this.$router.push({query:merge(this.$route.query,{addParams:我是新增的一…

2016年寒假心得

对于上学的孩子来说每年都有寒假,可是一样的寒假总是不一样的玩法。自从高中毕业之后,很少动笔写文了,这次就好好的写一下吧!咱的文笔也不是很好,就写个最简单的流水状大家凑合的看看吧!!&#…

Vue.js 定义组件模板的七种方式

转载自 Vue.js 定义组件模板的七种方式在 Vue 中定义一个组件模板,至少有七种不同的方式(或许还有其它我不知道的方式): 字符串模板字面量x-template内联模板render 函数JSF单文件组件 在这篇文章中,我将通过示例介绍…

.Net Core上用于代替System.Drawing的类库

目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径。 微软给出了将来取代System.Drawing的方案,偏向于使用一个单独的服务端进行各种图片处理https://github.com/dotnet/corefx/issues/2020https://github.com/imazen/Gra…

16-1 Redis分布式缓存引入与保存缓存功能实现

16-1 Redis分布式缓存引入与保存缓存功能实现 现在功能已经完成了,但是我们还是要考虑一下性能问题,现在任何请求都是要到数据库中查询很多的数据,才能知道当前的用户是否有权限可以访问当前的url,当我们的请求量很大时&#xff…

oracle基本笔记整理

oracle,简单来说就是数据库,数据库 ,顾名思义,就是存放数据的容器!! 不知道oracle的我先科普一下吧~~~科普,科学普及简称科普,又称大众科学或者普及科学,是指利用各种传…

不同范数下的余弦定理_第06题 | 从源头追溯「余弦定理」amp; 文理科知识点的异同...

文、理科数学大部分知识点、甚至相关知识点的考查形式都是共同的,甚至往年理科题目过几年就会出现在文科试卷上,反之亦然;「射影定理」是「余弦定理」的直接来源,所以不算超纲知识点。先发福利:这里有6场「高考数学」系…

ASP.NET CORE 项目实战 ---图形验证码的实现

简介   很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中试用,但是很多东西也是出于自己理解的肤浅和技术的不断更新…

vue.js 接收url参数

转载自 vue.js 接收url参数1) 路由配置传参方式在配置路由时 例如 "/firewall/authorize/:uid/:uname/:token"页面url为 http://XXX.com/firewall/authorize/23/zhangman/232454 js 接收方式 this.$route.params.uid,2) ?传参方式例 http://XXX.com/firewall/auth…

在IDEA中将SpringBoot项目打包成jar包的方法 不要用 在上面有可以用的

在IDEA中将SpringBoot项目打包成jar包的方法 2018年03月07日 10:43:52 叶叶叶叶大爷 阅读数 71375 版权声明: https://blog.csdn.net/qq_37105358/article/details/79467401 SpringBoot项目无需依赖tomcat容器(内含)就可以发布,现在将打包步骤记录一下: 1. 打包前…

磁珠 符号_贴片磁珠功能_贴片磁珠应用

磁珠专用于抑制信号线、电源线上的高频噪声和尖峰干扰,还具有吸收静电脉冲的能力。磁珠是用来吸收超高频信号,像一些RF电路,PLL,振荡电路,含超高频存储器电路(DDRSDRAM,RAMBUS等)都需要在电源输入部分加磁珠…

跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题

问题 生成缩略图生成验证码生成二维码给图片加水印 外部引用 Node 不解释 https://nodejs.org/en/download/sharp 高性能缩略图 https://github.com/lovell/sharpqr-image 二维码 https://github.com/alexeyten/qr-imagecaptchagen 验证码 https://github.com/contra/ca…