Как заменить один объект другим в массиве объектов с помощью VueJS? - PullRequest
0 голосов
/ 16 октября 2018

Я создаю веб-сайт с помощью VueJS и AdonisJS и настраиваю возможность публикации или отмены публикации статьи, просто установив для атрибута draft значение true или false.

* 1005.* Эта редакция атрибута возможна из указателя, где можно увидеть все статьи.Я создал таблицу, в которой есть кнопка действия, которая будет переключать атрибут, который будет отправлять HTTP-запрос POST Adonis с идентификатором.

Меня беспокоит то, что будет после: я не верю, что заменаЦелый массив - хороший вариант, но что мне делать вместо этого?Я попробовал следующее:

handlePublish (id) {
  this.$axios.post('/post/publish', {id: id}, {
    headers: {
      'Authorization': `Bearer [some token]`
    }})
    .then(response => {
      console.log(response)
      let toDelete = ''
      this.posts.map((post, index) => {
        if (post.id === id) {
          toDelete = index
        }
      })

    this.posts.splice(toDelete, 1)
    this.posts.push(response.data)
 })
 .catch(e => console.log(e.response))
}

Но как-то ничего не обновляется, исключено в базе.

Заранее спасибо

1 Ответ

0 голосов
/ 16 октября 2018

Вы используете map для перебора массива.Вместо этого вы можете использовать map, чтобы получить обновленный массив, возвращая новый элемент вместо старого,

.then(response => {
    this.posts = this.posts.map((post, index) => {
        if (post.id === id) {
          return response.data
        }
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...