Vue2使用watch同时监听多个属性
在项目中遇到需要同时监听多个属性,然后基于这些属性做一些操作的问题。
网上查找到的大概就是:
- 声明一个computed计算属性,这个计算属性返回一个对象,将我们需要监听的属性封装到这个对象中去。
- 定义一个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