Vue2使用watch同时监听多个属性

1,928 阅读1分钟

Vue2使用watch同时监听多个属性

在项目中遇到需要同时监听多个属性,然后基于这些属性做一些操作的问题。

网上查找到的大概就是:

  1. 声明一个computed计算属性,这个计算属性返回一个对象,将我们需要监听的属性封装到这个对象中去。
  2. 定义一个watch侦听器,监听声明的计算属性,从侦听器中的第一个参数(监听的属性的新值)中获取属性,然后去做一些操作。

简单示例:

export default {
    data() {
        return {
            a: '',
            b: ''
        }
    }
},
computed: {
  /** 返回职务和周期类型 */
  positionAndperiodType () {
    const { a, b } = this
    return { a, b }
  }
},
watch: {
  /** 监听 */
  aAndb (newValue, oldValue) {
    /** 如果a和b都有值,打印a和b的值 */
    if (newValue.a && newValue.b) {
      console.log('newValue', newValue)
    }
  }
},

需要注意的是,a,b 必须是在this上挂载的属性,可以存在于data/props