Смотреть элементы простого массива - PullRequest
1 голос
/ 11 октября 2019

Vue не видит изменений в простых элементах массива.

Я изучаю Vue.js и у меня проблема с наблюдателем. А именно я пытаюсь наблюдать за изменениями в массиве и изменять одно значение данных. Каждый раз, когда я добавляю новый элемент и изменяю или удаляю существующий элемент, я хочу изменить значение.

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

Vue просто посмотреть, когда изменяется длина массива, но не конкретный элемент.

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете смотреть вложенные значения в object, как показано в документах , используя точечную строку .

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]), потому что ссылка на мой сдвиг или будет удалена. Я думаю, что лучший способ сделать то, что вы хотите, это сравнить newValue и oldValue в функции обработчика watcher , если изменяется весь массив.

// 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()
  }
},
...