watch属性可以是一个对象,也可以是一个函数。对象中的每个属性都是一个监听器,用于监听指定的数据变化。如下所示:
javascript watch: { // 监听firstName属性的变化 firstName: function(newVal, oldVal) { console.log('firstName变化了:', oldVal, '=>', newVal); }, // 监听lastName属性的变化 lastName: function(newVal, oldVal) { console.log('lastName变化了:', oldVal, '=>', newVal); } }
当firstName或lastName属性的值发生变化时,对应的监听器函数就会被调用。
默认情况下,watch只能监听对象的第一层属性变化。如果对象嵌套层级比较深,需要使用深度监听。可以通过设置deep为true来实现:
javascript watch: { 'obj.prop': { handler: function(newVal, oldVal) { console.log('obj.prop变化了:', oldVal, '=>', newVal); }, deep: true } }
当obj对象的prop属性发生变化时,对应的监听器函数就会被调用。
Vue提供了一些特殊的数组方法,可以自动触发数组变化的监听器。这些方法包括push、pop、shift、unshift、splice、sort和reverse。如果需要监听数组的变化,可以使用以下方式:
javascript watch: { arr: function(newVal, oldVal) { console.log('arr变化了:', oldVal, '=>', newVal); } }
当使用上述特殊数组方法时,对应的监听器函数就会被调用。