Почему не подключается v-model по значению объекта?

Пишу простой тест, вопросы берутся из JSON файла, ответы для которого могут выбираться либо через radio-кнопку, либо через checkbox. Для того чтобы отправить все ответы на тест, я создал массив result, в каждый элемент которого я поместил объект с заголовком вопроса и ответом на этот вопрос.
Открыть код
import questions from './json/seven_layers_of_fog.json';
export default {
  components: { DatePicker,TheMask },
  data: function() {
    return {
      title: questions.title,
      questions: questions.questions,
      result: []
    }
  },
  created(){
    for (var i = 0; i < this.questions.length; i++) {
      this.result[i] = {
        'title' : this.questions[i].text,
        'answer' : ''
      }
    }
  },
}



Итоговый массив имеет следующий вид:
Открыть изображение
5cbd831e6d91a451153874.png


Далее я делаю разметку вопросов:

Открыть код
<template>
  <div class="quiz">
    <h1>{{title}}</h1>
    <div v-for="(question,index) in questions" class="quiz__question question" v-if="result.length > 0">
        <div class="question__title">
          {{index+1}}. {{question.text}}:
          <div v-if="question.required" class="question__required">*</div>
        </div>
        <div class="question__answers">
          <div v-for="(ans,i) in question.answers" class="question__answer">
            <input :type="question.type" v-model="result[index].answer" :value="ans" :id="'q'+index+'a'+i">
            <label :for="'q'+index+'a'+i">{{ans}}</label>
          </div>
        </div>
    </div>
    <button class="button" name="button">Закончить тест</button>
  </div>
</template>



И вот в строке:
<input :type="question.type" v-model="result[index].answer" :value="ans" :id="'q'+index+'a'+i">
у меня не работает v-model. Если я креплюсь к полю объекта какого-либо элемента массива, то при выборе чекбоксов или радио-кнопок, взаимодействия не происходит. Если же я креплюсь так:
<input :type="question.type" v-model="result[index]" :value="ans" :id="'q'+index+'a'+i">
, то все работает, но как понимаете - объект из элемента массива стирается.

Можно ли как это исправить эту проблему?

P.S. Возможно есть более простые способы сохранить значения выбранных чекбоксов (в виде значений, а не true/false), учитывая что вместо чекбоксов могут быть и радио кнопки, которые как и надо возвращают value инпута.
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
potapchino
@potapchino
попробуйте result[index].answer сделать массивом
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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