📜  vue watch 子属性 - Javascript (1)

📅  最后修改于: 2023-12-03 15:21:04.533000             🧑  作者: Mango

Vue中的watch子属性

当我们使用Vue构建单页面应用程序时,往往需要对一些数据的变化进行监听,以便在数据变化时进行相应的操作。Vue提供了一种在数据变化时触发特定函数的机制,即使用watch选项。在watch选项中,我们可以使用子属性来监听特定属性的变化。

监听对象的属性

我们可以在watch选项中使用对象的键来监听对象的特定属性。例如:

watch: {
  user: {
    handler(newVal, oldVal) {
      console.log('user属性值已改变')
    }
  }
}

user对象的任何属性的值发生变化时,handler函数将被调用。handler函数接受两个参数,newVal表示变化后的属性值,oldVal表示变化前的属性值。

监听数组的元素

对于数组,我们可以使用以下方式监听数组中某个元素的变化:

watch: {
  'myArray.1': {
    handler(newVal, oldVal) {
      console.log('myArray数组的第二个元素值已改变')
    }
  }
}

使用myArray.1键来监听myArray数组的第二个元素的变化。此时,handler函数的第一个参数将是变化后的元素值,第二个参数将是变化前的元素值。

监听对象的某个属性

我们还可以监听对象的某个属性的变化。在watch选项中,我们需要使用以下方式来设置监听:

watch: {
  'user.name': {
    handler(newVal, oldVal) {
      console.log('user对象的name属性已改变')
    }
  }
}

使用user.name键来监听user对象的name属性的变化。注意,handler函数的第一个参数将是变化后的属性值,第二个参数将是变化前的属性值。

监听多个属性

我们可以使用数组的形式来监听多个属性的变化:

watch: {
  user: {
    handler(newVal, oldVal) {
      console.log('user属性值已改变')
    },
    deep: true
  },
  'user.name': {
    handler(newVal, oldVal) {
      console.log('user对象的name属性已改变')
    }
  }
}

在这个例子中,我们同时监听user对象和user.name属性的变化。使用deep选项来告诉Vue深度监听对象的变化。如果不设置deep选项,则Vue仅监听对象的一级属性的变化。

总结

在Vue中,我们可以使用watch选项来监听数据的变化,并在数据变化时执行特定的操作。使用子属性可以实现对对象和数组的特定属性或元素的监听。掌握这个技巧可以让我们更好地使用Vue构建单页面应用程序。