vue watch用法,监听路由

139 篇文章 1 订阅

第一种直接监听一个字段

结果如下:

通过watch来直接监测demo,如果demo的值变化,value的值也会跟着一起变化

第二种间接监听对象

<template>
    <div class="box">
        <input  type="text" v-model="demo.name" />
        value:{{value}}
        <br>
    </div>
</template>
<script>
export default {
  name: 'HelloWorld',
    data() {
        return {
            demo: {
                name: '',
            },
            value: '',
        };
    },
    computed:{
        newName(){
            return this.demo.name
        }
    },
    watch: {
        newName(val) {
            console.log("val",val)
            this.value = val;
        }
    }
}
</script>

结果如下:

如果watch监测的是一个对象的话,直接使用watch是不行的,此时我们可以借助于computed计算属性来完成

第三种 监听对象中的属性

效果如下:

第四种:监听对象中的所有属性的变化

<template>
  <div id="app">
    <input type="text" v-model="childrens.name"/><br>
    <input type="text" v-model="childrens.age"/>
  </div>
</template>
<script>
  export default {
    name: 'app',
    data(){
      return{
        childrens: {
          name: '',
          age: null,
        },
      }
    },
    watch:{
      childrens:{
        handler:function(val){
          console.log(val.name,val.age)
        },
        deep:true//对象内部的属性监听,也叫深度监听  必须要有否则监听不到
      },
    },
  }
</script>

注意细节:watch 监听是从第一次赋值都开始监听了

<template>
  <div id="app">
    <input type="text" v-model="childrens.name"/><br>
    <input type="text" v-model="childrens.age"/>
  </div>
</template>
<script>
  export default {
    name: 'app',
    data(){
      return{
        childrens: {
          name: '',
          age: null,
        },
      }
    },
    created(){
      this.childrens.name = "jjw";
      this.childrens.age = 10
    },
    watch:{
      childrens:{
        handler:function(val){
          console.log(val.name,val.age)
        },
        deep:true//对象内部的属性监听,也叫深度监听
        // 也可写上下边这一个,表示当我们监听的数据第一次被绑定的时候就开始监听
        immediate:true
      },
    },
  }
</script>

监听路由:

最后需要注意的是:

只要是监听的是路由,不管是子组件还是父组件还是没有相关连的组件,只要路由(不论是哪个地方的路由)发生了变化,这个地方的watch监听到的内部函数都会执行,

原因就是路由在开始的时候就已经进行了注册,所以路由是全局的,所以这里的监听也是全局的

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值