在 v-for 循环中并排显示动态生成的表单

Display dynamically generated forms next to each other in v-for loop

我根据 json 文件生成动态表单。但是它们会像这样相互显示:

但它应该像这样显示(例如,这是 3 个输入,如果我有 4 个,第四个应该在第三个旁边,依此类推。)

<div v-for="(item, index) in json" :key="index">
  <b-form-input v-if="item.type" :type="item.type"></b-form-input>
</div>

我的对象:

[
    {
        "key": "key1",
        "label": "Input Type Text",
        "type": "text",
        "value": ""
    },
    {
        "key": "key2",
        "label": "Input Type Number",
        "type": "number",
        "value": ""
    },
    {
        "key": "key3",
        "label": "Input Type Number",
        "type": "number",
        "value": ""
    }
]

我已经尝试用 class="row" 来解决它,但它不起作用,因为它们彼此之间仍然是一样的..

从标签我可以看出你正在使用 bootstrap

在 bootstrap 中,您可以使用 rowcol 将项目并排对齐。

<div class="row">
  <div v-for="(item, index) in json" :key="index" class="col-6">
    <b-form-input v-if="item.type" :type="item.type"></b-form-input>
  </div>
</div>

is it possible that it should only "col-6" my input fields. I have also some selectoin and checkboxes... these I want to have "col-12"

根据具体情况,我会采用两种方法

首先,如果您可以编辑输入对象并希望在 类 中获得更多自由,您可以这样做:

方法一

编辑您的对象以包含 类

[
    {
        "key": "key1",
        "label": "Input Type Text",
        "type": "text",
        "value": "",
        "classes": "col-6"
    },
    {
        "key": "key2",
        "label": "Input Type Number",
        "type": "number",
        "value": "",
        "classes": "col-6"
    },
    {
        "key": "key3",
        "label": "Input Type Number",
        "type": "number",
        "value": "",
        "classes": "col-6 another-class"
    }
]

然后在 html

中使用 类
<div class="row">
  <div
    v-for="(item, index) in json"
    :key="index"
    :class="item.classes"
   >
    <b-form-input v-if="item.type" :type="item.type"></b-form-input>
  </div>
</div>

方法二

根据输入类型

分配条件类
<div class="row">
  <div
    v-for="(item, index) in json"
    :key="index"
    :class="{
      'col-6': item.type === 'number' || item.type === 'text' || item.type === 'email',
      'col-12': item.type === 'select' || item.type === 'checkbox',
    }"
   >
    <b-form-input v-if="item.type" :type="item.type"></b-form-input>
  </div>
</div>

答案基于 s4k1b's