vue监听对象内的属性

监听对象内的属性

通过vue的官方文档我们知道watch函数可以监听data中的各种变量,但若要监听的变量是一个对象中的某个属性,就很难做到了。

data() {
    return {
        normalVar: 0,
        myObject: {
            myKey: myValue
        }
    }
},
watch() {
    // 这是对普通对象的监听,要监听myObject中的myKey就无法直接用watch做到了
    normalVar() {
        console.log('normalVar changed');
    }
}

那么我们如何监听到myObject中的myKey变化呢?这里就要用到computed属性做为中间层了,通过computed做为中间层就可以完美监听到myObject中myKey的变化了。

data() {
    return {
        myObject: {
            myKey: myValue
        }
    }
},
computed() {
    computeMyKey() {
        return this.myObject.myKey
    }
},
watch() {
    computeMyKey() {
        console.log('myKey changed');
    }
}