v-for循环Vue 2中的动态V模型名称

时间:2017-04-12 08:40:36

标签: javascript vuejs2

我正在开发一个应用程序,我使用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正常工作?

4 个答案:

答案 0 :(得分:32)

v-modelform.parent_id[n]一起使用:

  1. form应该是数据属性。
  2. form.parent_id应该是一个数组。
  3. 然后您可以执行以下操作:

    <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以获取有效工作示例。

答案 1 :(得分:7)

实现此目的的另一种方法是使用访问对象属性的括号表示法。

<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> 

答案 2 :(得分:0)

假设input_name_id是一个字符串,您需要做的是:name="'input_name_id' + n"

这是一个有效的solution

答案 3 :(得分:0)

重复的文本提交了10次,并为每个文本分别设置了v-model

<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: [],
        }
      }