@igor_solweb

Как передать значение input не используя v-model?

Добрый день!

Стоит простенькая задача, не могу додуматься как ее правильно реализовать:
5f59f035afac4372738731.jpeg

имеется подгружаемые из Json параметры (на рисунке), с подгрузкой проблем нет, а вот как правильно сохранить пока не придумал, есть кнопка Save по нажатию которой нужно обратно все параметры с inputОВ передать в JSOn, то есть если там что-то изменилось в любом input, то нужно сохранить это значение при нажатии кнопке Save. v-model здесь не подойдет, т.к. inputОВ может быть хоть 100 и больше.

Думал над таким вариантом, что при нажатии на кнопку Save просто через for цикл пробегаться по массиву из которого берутся данные, но вот как конкретное значение конкретного input записать обратно в массив?

Натолкните на мысль верную пожалуйста )
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
Gimir
@Gimir
JavaScript dev
Была похожая задача, приходил объект описывающий поля формы, из которого нужно было сделать готовую форму.
Допустим такой объект:
{
   form_id: 12,
   submit_btn_text: 'Отправить',
   post_url: 'https://someurl.com/api/',
   form_fields: [
      { type: 'text', placeholder: 'some plshldr', label: 'some label', field_id: 'some_id' },
      { type: 'text', placeholder: 'some plshldr', label: 'some label', field_id: 'some_id' },
      { type: 'text', placeholder: 'some plshldr', label: 'some label', field_id: 'some_id' }
   ]
}

И заранее прописать для такой формы поля в data() не получится.
Я сделал это следующим образом:
в beforeMount() я пробегался по массиву form_fields и создавал новый объект (допустип field_models) с уникальными ключами для каждого поля и значением пустой строки (в зависимости от типа поля, там могли быть и чекбоксы). Далее в template я итерировал этот массив (form_fields) вот так (при условии что нет чекбоксов)

<input v-for="field in form_fields" :type="field.type" :placeholder="field.placeholder" v-model="field_models[field.id] />
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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