bazilio2010
@bazilio2010
Мужчина

Как обновить значение в элементе массива?

Дано вот такой json массив
inputs: [
      { label: 'Продавец', label1: 'Покупатель', type: 'text', name: 'seller'},
      { label: 'Полное наименование продавца', label1: 'Полное наименование покупателя',  type: 'text', name: 'fullname'},
     ]

после клика вызываю событие где такая функция

this.inputs.forEach((value, index) => {
  this.$set(this.inputs, index, {label: value.label1})
});

Все работает но проблема что вся строка массива обнуляется
То есть остается только label а type и text пропадает
  • Вопрос задан
  • 132 просмотра
Решения вопроса 2
@dGololobov
начинающий
Если вы хотите сделать именно так как у вас написано, то вот вариант:
this.inputs.forEach((value, index) => {
  this.$set(this.inputs, index, {...value, label: value.label1})
});


Но я бы сделал по другому. Если мне нужно заменить label на label1 из того же элемента во всех элементах массива.
Можно например отмапить весь массив. И по идее вам даже set не понадобится:

this.inputs = this.inputs.map(item => ({ ...item, label: item.label1 }))


В вашем варианте как я понимаю отрисовка компонента будет происходить всякий раз, когда вы изменяете элемент массива. В моем же варианте отрисовка произойдет один раз, только после того как весь массив будет обновлен.
Ответ написан
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Не проверял, но в теории должно сработать: обновляете одно поле в конкретном элементе массива
this.$set(this.inputs[index], 'label', value.label1)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы