【问题标题】:Watch elements of simple array观察简单数组的元素
【发布时间】:2020-02-08 09:29:51
【问题描述】:

Vue 看不到简单数组项的变化。

我正在学习 Vue.js,但对 watcher 有疑问。 即我试图观察数组的变化,并改变一个数据值。 每次我添加新项目并更改或删除现有项目时,我都想更改值。

data() {
    return {
        change: false,
        array: ['one','two','three','four']
    }
},
watch:{
    array:{
        deep:true,
        handler(){
            this.change = true;
        }
    }
}

Vue 只查看数组长度何时更改,而不是特定元素。

【问题讨论】:

标签: javascript arrays vue.js watch


【解决方案1】:

您可以使用 dot-like-string 表示法查看 object 中的嵌套值,如 docs 所示。

var vm = new Vue({
  data: {
    e: {
      f: {
        g: 5
      }
    }
  },
  watch: {
    // watch vm.e.f's value: {g: 5}
    'e.f': function (val, oldVal) { /* ... */ }
  }
})

据我所知,您不能对数组(即array[0])执行此操作,因为引用我的班次或被删除。我认为做你想做的最好的方法是比较 newValueoldValue 在观察者 handler 函数如果整个数组发生变化。

// from vuejs docs
watch: {
  // whenever question changes, this function will run
  question: function (newQuestion, oldQuestion) {
    this.answer = 'Waiting for you to stop typing...'
    this.debouncedGetAnswer()
  }
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-26
    • 2019-04-26
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2021-07-15
    • 1970-01-01
    相关资源
    最近更新 更多