美文网首页
vue开发:watch 侦听器(监视器)

vue开发:watch 侦听器(监视器)

作者: 家乡的蝈蝈 | 来源:发表于2024-03-24 09:38 被阅读0次

1.作用:

**监视数据变化**,执行一些业务逻辑或异步操作

2.语法:

  1. watch同样声明在跟data同级的配置项中
  2. 简单写法: 简单类型数据直接监视
  3. 完整写法:添加额外配置项

2.1 监听器简单写法

data: { 
 words: '苹果',
 obj: {
   words: '苹果'
 }
},
  watch: {
    // 该方法会在数据变化时,触发执行
    数据属性名 (newValue, oldValue) {
      一些业务逻辑 或 异步操作。 
    },
    '对象.属性名' (newValue, oldValue) {
      一些业务逻辑 或 异步操作。 
    }
  }

2.2 监听器复杂写法

完整写法 —>添加额外的配置项

  1. deep:true 对复杂类型进行深度监听
  2. immdiate:true 初始化 立刻执行一次
watch: {// watch 完整写法
  数据: {
    deep: true, //加入该配置,表示深度侦听;当对象的任意属性改变后,都可以侦听到
    immediate: true, //立即侦听(页面刷新,马上执行一次handler函数)handler
    handler (变化后的值,变化前的值) {
      console.log(newValue)
    }
  }
}

案例-实现翻译功能

<script>
    const app = new Vue({
      el: '#app',
      data: {
        words: '',
        obj: {
          q: 'What the fuck is a surprise',//把输入框双向绑定
          from: 'en', //你输入的是什么语言
          to: 'zh' //翻译成什么语言
        },
        result: '', //翻译后的结果
        timer: null
      },
      // 侦听器
      watch: {
        obj: {
          handler(val) {
            if (val === '') {
              this.result = ''
              return
            }
            clearTimeout(timer)
            this.timer = setTimeout(async () => { // async加在离await最近一层的函数上
              const { data: res } = await axios({
                url: 'http://www.itcbc.com:3006/api/translate',
                params: val
              })
              console.log(res)
              // 把服务器返回的结果,赋值给数据项
              this.result = res.trans_result[0].dst
            }, 1000)
          },
          deep: true, //加入该配置,表示深度侦听;当对象的任意属性改变后,都可以侦听到
          immediate: true //立即侦听(页面刷新,马上执行一次handler函数)
        }
      }
    })
  </script>

相关文章

网友评论

      本文标题:vue开发:watch 侦听器(监视器)

      本文链接:https://www.haomeiwen.com/subject/vqoftjtx.html