watch

用于观察一个表达式或computed函数在Vue.js实例上的变化。回调函数调用时会从参数得到新数据(new value)和旧数据(old value)。表达式只接受以点分割的路径,例如obj,obj.a.如果是比较复杂的表达式,可以用函数代替表达式。


<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app">姓名:<input type="text" v-model="obj.name"><br>年龄:<input type="text " v-model="obj.age"><br><button @click="fn">点我修改</button></div>
</body>
<script src="./vue.js"></script>
<script>// watch:// 1.只要被监听的数据发生改变,就会触发对应的逻辑代码// 2.如果被监听的数据是个对象,对象中的属性发生改变时,监听是不会触发上的let vm = new Vue({el: '#app',data: {obj: {name: "xiaoming",age: 18}},watch: {// 如果被监听的数据是个对象,对象中的属性发生改变时,监听是不会触发上的// obj: function () {//   console.log('obj改变了');// },// 单独监听obj中的name属性,只要其修改watch就会触发'obj.name': function (newValue, oldValue) {// newValue为新值// oldValue为旧值console.log('obj改变了');console.log('obj改变了');}},methods: {fn() {this.obj = {} // 修改了obj中的内在指向// this.obj.name = "zhansang" //还是在obj中内存中修改不会触发watch}},})
</script></html>

watch深度监听

  • deeptrue开启,默认为false
  • 开启深度监听:只要obj中的任何一个属性发生改变,都会触发相应的代码
  • 数组也是同样如此
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><div id="app">姓名:<input type="text" v-model="obj.name" /><br />年龄:<input type="text " v-model="obj.age" /><br /></div></body><script src="./vue.js"></script><script>// watch:// 1.只要被监听的数据发生改变,就会触发对应的逻辑代码// 2.如果被监听的数据是个对象,对象中的属性发生改变时,监听是不会触发上的let vm = new Vue({el: '#app',data: {obj: {name: 'xiaoming',age: 18}},watch: {obj: {handler: function () {console.log('obj改变了')},// 开启深度监听:只要obj中的任何一个属性发生改变,都会触发相应的代码deep: true}}})</script>
</html>

watch的immediate

  • 在选项中指定immediate: true,将立即以表达式的当前值触发回调
 watch: {obj.name: {handler: function () {console.log('obj改变了')},// 立即以obj.name的当前值触发回调immediate: true}}

watch的数组格式

传入的回调数组,它们会被逐一调用

  • 有时我们需要在某一变量中调用多个操作
  watch: {'obj.name': {handler () {this.fn1 ()this.fn2 ()},immediate: true,deep: true}},methods: {fn1 () {console.log('执行了fn1')},fn2 () {console.log('执行了fn2')} }
  • fn1,fn2都需要在value变动的时候调用,如果需要两者的调用时机不同,以上写法就无法实现了,这就需要用到watch的数组格式了
  watch: {'obj.name': [{handler () {this.fn1 ()},deep: true},// 进入需立即执行一次fn2{handler () {this.fn2 ()},deep: true,immediate: true}]},methods: {fn1 () {console.log('执行了fn1')},fn2 () {console.log('执行了fn2')}},

watch中的深度监听相关推荐

  1. vue中如何深度监听一个对象?

    大家都知道,Vue项目中对数据的监听,提供了一个很好的钩子watch,watch可以极其方便的监听我们常用数据类型值的变化,但通常当我们想监听一个对象中,某个属性值的变化时,很难达到我们预期的效果.那 ...

  2. vue watch 经常监听不到_Vue.js中 watch(深度监听)的最易懂的解释

    FullName: {{fullName}} FirstName: newVue({ el:'#root', data: { firstName:'Dawei', lastName:'Lou', fu ...

  3. Vue.js中 watch(深度监听-deep)原理以及详解

    handler方法和immediate属性 这里 watch 的一个特点是,最初绑定的时候是不会执行的,要等到 firstName 改变时才执行监听计算.那我们想要一开始就让他最初绑定的时候就执行改怎 ...

  4. vue2.0中watch总结:普通监听和深度监听

    watch:{} 是一个对象,一定要当成对象来用,可监听数据,是vue中数据发生变化进行处理的函数, 它有三个选项 第一个handler:其值是一个回调函数.即监听到变化时应该执行的函数. 第二个是d ...

  5. vue中watch的初次监听和深度监听

    文章目录 handler immediate deep 代码示例 handler 监听值变化时的回调函数 immediate 是否做初次监听,一般用于需要对该值初始化的监听 deep 是否做深度监听, ...

  6. watch深度监听数组_vue watch普通监听和深度监听实例详解(数组和对象)

    vue watch普通监听和深度监听实例详解(数组和对象) 下面通过一段代码给大家介绍vue watch的普通监听和深度监听,具体代码如下所示: var vm=new Vue({ data:{ num ...

  7. Angular.js中使用$watch监听模型变化

    $watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEqua ...

  8. vue2中的watch监听

    一. watch使用的几种方法 1.  通过  watch  监听  msg 数据的变化. watch: {msg(oldValue, newValue) {console.log(oldValue) ...

  9. VUE对数组进行深度监听无法改变值解决办法(全网最详细)

    最近三水在做项目的时候遇到这样一个需求,点击新增按钮弹框,然后添加一堆主表的数据 ,因为是一对多关联,下面还有可以新增子表中的数据.其中主表中有有一个数量字段,当主表输入数字的时候,子表中也改变. 首 ...

最新文章

  1. 搭建Jasig CAS中央认证服务实现单点登录——搭建Tomcat并实现SSL安全连接
  2. 第二篇T语言实例开发(版本5.3),福彩3D摇号器
  3. 分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC
  4. CPU位数、操作系统位数、应用程序位数浅析
  5. SecureCRT key登录linux ssh设置
  6. mysql报错1200_关于MYSQL配置replicate出现1200错误_MySQL
  7. Python yield 的基本概念和用法
  8. 网络工程制图论文计算机,工程制图论文.doc
  9. 在阿里矢量库下载了字体图标在项目引入无法显示时
  10. FFmpeg再学习 -- Linux 安装说明
  11. 计算机传真,电脑收发传真
  12. SCAU 正n多边形类的定义与使用
  13. php课程设计感想,设计心得体会
  14. 做PPT别再傻乎乎的直接插入图片了,手把手教你处理毛玻璃式图片
  15. element tree不刷新视图_我不告诉你的话,你不会知道iPad原来也有这么多窍门,学起来...
  16. java乘方运算符号_Java 4. 运算符号
  17. 实体零售纷纷转型,苏宁、乐语到底能给我们带来哪些启示?
  18. 计算机专业论文docx,计算机专业毕业大学生论文.docx
  19. 互联网的女性主义特征
  20. python 读取合并单元格的数据_Python使用xlrd实现读取合并单元格

热门文章

  1. Android中的多线程
  2. Spring Java Mail发邮件
  3. (application)javaweb中application的用法
  4. 查看linux操作系统版本--实用
  5. 涉及到第三方支付接口该如何测试?
  6. 微信已经成为电商最重要的一个通道
  7. 粗览Activiti Modeler操作和源代码
  8. 使用java对文件夹中文件后缀进行修改
  9. 星座图中格雷映射及其实现
  10. JS和node.js的区别