码迷,mamicode.com
首页 > 其他好文 > 详细

Vue中watch的高级用法

时间:2019-09-08 22:15:06      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:无效   调用   高级   加载   media   class   methods   默认   改变   

<template>
  <div>
      <input type="text" v-model="value">
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value:null
      }
    },
    created(){
      this.test()
    },
    methods: {
      test(){
        console.log("第一个加载")
      }
    },
    watch: {
      value(val){
        this.test()
      }
      
    },  
  }
</script>

上面的代码的效果是,页面第一次加载需要调用test方法,每次输入都要调用test方法

可以使用handler方法和immediate属性进行优化

immediate:true代表如果在 wacth 里声明了 test 之后,就会立即先去执行里面的handler方法,

如果为 false就跟我们以前的效果一样,不会在绑定的时候就执行。

    watch: {
      value:{
        handler:‘test‘,
        immediate:true
      },
      
    },  

这样可以每次输入调用test方法,当然要是你需要每次拿到值也可以这样写

    watch: {
      value:{
        //handler:‘test‘,
        handler(val){
          console.log(val)
        },
        immediate:true
      },
      
    },  

 

deep的用法

watch 里面还有一个属性 deep,默认值是 false,代表是否深度监听,比如我们 data 里有一个obj属性:

<template>
  <div>
      <input type="text" v-model="obj.a">
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value:null,
        obj:{
          a:null
        }
      }
    },
    created(){

    },
    methods: {
      test(){
        console.log("第一个加载")
      }
    },
    watch: {
      obj:{
         handler(val){
          console.log(val)
        },
        immediate:true,
      },
      
    },  
  }
</script>

 

当我们在在输入框中输入数据视图改变obj.a的值时,我们发现是无效的

这时候可以使用deep

    watch: {
      obj:{
         handler(val){
          console.log(val)
        },
        immediate:true,
        deep:true
      }
}

 

也可以使用 字符串

    watch: {
      ‘obj.a‘:{
         handler(val){
          console.log(val)
        },
        immediate:true,
        deep:true
      },

 

Vue中watch的高级用法

标签:无效   调用   高级   加载   media   class   methods   默认   改变   

原文地址:https://www.cnblogs.com/mydxy/p/11488586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!