Динамическое имя V-модели в v-for-контуре Vue 2

Я разрабатываю приложение, и я использую Vue 2 в качестве фреймворка javascript, внутри цикла v-for мне нужно, чтобы счетчик цикла был привязан к имени v-model элементов, это мой код:

<div v-for="n in total" class="form-group">
    <input type="hidden" id="input_id" :name="'input_name_id['  + n  + ']'" v-model="form.parent_id_n" />
</div>  

Мне нужно n быть счетчиком цикла, например, для первого элемента он должен быть:

<div class="form-group">
    <input type="hidden" id="input_id" :name="'input_name_id[1]" v-model="form.parent_id_1" />
</div>

привязка name attribute работает, но я понятия не имею, как заставить работать v-model?

Ответ 1

Чтобы использовать v-model с form.parent_id[n]:

  • form должен быть свойством data.
  • form.parent_id должен быть массивом.

Затем вы можете сделать следующее:

<div id="demo">
  <div v-for='n in 3'>
    <input v-model="form.parent_id[n]">
  </div>
  <div v-for='n in 3'>
    {{ form.parent_id[n] }}
  </div>
</div>

с помощью установки экземпляра vue, например:

var demo = new Vue({
    el: '#demo',
    data: {
      form: {
        parent_id: []
      }
    }
})

Отметьте fiddle для рабочего примера.

Ответ 2

Другим способом достижения этого является использование скобочной записи доступа к свойству объекта.

<div v-for="n in total" class="form-group">
   <input type="hidden" 
          id="input_id" 
          :name="'input_name_id['  + n  + ']'" 
          v-model="form['parent_id_' + n ]" />
</div> 

Ответ 3

Предполагая, что input_name_id является строкой, вам нужно сделать :name="'input_name_id' + n"

Вот работающий решение

Ответ 4

Повторный текст подан 10 раз и отделен v-моделью для каждого

<v-text-field
  v-for="(n,index) in 10"
  :key="index"
  v-model="pricing.name[n]"
  color="info"
  outline
  validate-on-blur
/>

хранение данных

data() {
    return {
     pricing:{
      name: [],
        }
      }