Vue. js не связывать замененный элемент в массиве. Работает со сращиванием .... почему? - PullRequest
2 голосов
/ 03 апреля 2020

Я хочу обновить базу записей в ответе сервера и обновить sh таблицу данных без извлечения всего списка. Я нашел решение, но не понимаю, почему this.items [this.editedIndex] = payload.data это! OK и ** this.items.splice (this.editedIndex, 1, payload.data) ** в порядке.

save() {
      fetch(this.api + "/" + this.editedItem.id, {
          method: "PUT",
          body: JSON.stringify(this.editedItem),
          headers: {
            "content-type": "application/json"
          }
        })
         .then(payload => payload.json())
         .then(payload => {
            this.items.splice(this.editedIndex, 1, payload.data) // THIS WORKS!!
            //this.items[this.editedIndex] = payload.data // THIS DOESN'T... WHY?
          })
          .catch()
      }

1 Ответ

0 голосов
/ 03 апреля 2020

Vue не может обнаружить непосредственное обновление индекса в случае массива, поэтому используйте метод Vue.set или его псевдоним * метод 1002 *.

this.$set(this.items, this.editedIndex, payload.data)

См .: Предупреждение об изменении обнаружения

...