如何在 Vue v-for 中访问多个变量?

Posted

技术标签:

【中文标题】如何在 Vue v-for 中访问多个变量?【英文标题】:How to access multiple variables in Vue v-for? 【发布时间】:2021-04-04 15:33:02 【问题描述】:

如何在输入组中更改 bootstrap-vue 中的标签?我对输入字段没问题,我遇到的问题是尝试将标签更改为不同的标签?

<template>
  <b-modal id="Transfer" centered title="Transfer">
    <b-container fluid>
      <b-row class="my-1" v-for="type in types" :key="type">
        <b-col sm="3">
          <label :for="`type-$type`">Type <code> type </code>:</label>
        </b-col>
        <b-col sm="9">
          <b-form-input :id="`type-$type`" :type="type"></b-form-input>
        </b-col>
      </b-row>
    </b-container>
  </b-modal>
</template>
data: () => (
  labels: [].concat('test', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8', 'time', 'range', 'color'),
  types: [].concat('text', 'number', 'email', 'password', 'search', 'url', 'tel', 'date', 'time', 'range', 'color')
)

【问题讨论】:

【参考方案1】:

在一个对象(或数组)中定义您的字段数据,然后您可以轻松访问v-for 中的所有数据。通过这种方式,您还可以存储数据本身的模型,否则必须是第三个数组:

new Vue(
  el: "#app",
  data: () => (
    fields: 
      test:  type: 'text', model: '' ,
      test2:  type: 'number', model: '' ,
      test3:  type: 'email', model: '' ,
      test4:  type: 'password', model: '' ,
      test5:  type: 'search', model: '' ,
      test6:  type: 'url', model: '' ,
      test7:  type: 'tel', model: '' ,
      test8:  type: 'date', model: '' ,
      test9:  type: 'time', model: '' ,
      test10:  type: 'range', model: '' ,
      test11:  type: 'color', model: '' 
    
  ) 
);

一个对象稍后通过名称查找字段会稍微容易一些,例如,在进行验证时。

然后在您的v-for 中,您可以访问field.type 上的typelabel 作为循环索引。并给每个输入一个v-model="field.model"

<b-modal id="Transfer" centered title="Transfer">
  <b-container fluid>
    <b-row class="my-1" v-for="(field, label) in fields" :key="label">
      <b-col sm="3">
        <label :for="`type-$field.type`">Type <code> field.type </code>  label :</label>
      </b-col>
      <b-col sm="9">
        <b-form-input :id="`type-$field.type`" v-model="field.model" :type="field.type"></b-form-input>
      </b-col>
    </b-row>
  </b-container>
</b-modal>

【讨论】:

以上是关于如何在 Vue v-for 中访问多个变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vue 3 中使用 v-for 附加图像

如何在不使用 v-for 的情况下使用 Vue.js 访问 JSON 值

使用bootstrap-vue的Vue:在列表中始终阻止多个扩展列表元素(v-for)

vue中v-for循环如何将变量带入class的属性名中

带有 bootstrap-vue 的 Vue:在列表中始终防止多个扩展列表元素(v-for)

将事件和本地 vue 变量传递给绑定函数的惯用方式