我有一个数据数组:
[
{
type: select,
options: [foo, bar],
label: foo,
required: true
},
{
type: text,
options: [],
label: bar,
required: false
},
{
type: checkbox,
options: [],
label: baz,
required: true
}
]
和Vue模板:
<b-row>
<b-col>
<label :for="{{label}}">{{ label }}<span class="required" v-if="required"/></label>
{{ checks type and injects proper form element here }}
</b-col>
</b-row>
我正在尝试找出如何最好地遍历每个对象,并将每个对象放入自己的<b-col>
中,每行只有两列,以使其看起来类似于以下结构:
<b-row>
<b-col>
<label for="size">foo<span class="required" v-if="required"/></label>
<b-form-select id="size">
<options>foo</options>
<options>bar</options>
</b-form-select>
</b-col>
<b-col>
<label for="size">bar<span class="required" v-if="required"/></label>
<b-form-text id="size"/>
</b-col>
</b-row>
<b-row>
<b-col>
<label for="size">baz<span class="required" v-if="required"/></label>
<b-form-select id="size"/>
</b-col>
<label for="size">barbaz<span class="required" v-if="required"/></label>
<b-form-select id="size"/>
</b-col>
</b-row>
...etc.
我正在努力寻找最佳方法来干净利落地以类似vue的方式完成此任务。
答案 0 :(得分:2)
您可以遍历数组,将每个元素放在b-col
内,然后将每个列的宽度指定为50%,如下所示:
<b-row>
<b-col v-for="item in array" sm="6">
...do something with item
</b-col>
</b-row>
sm="6"
告诉引导程序使用等于6列(即50%)的空间量
我不确定vue-bootstrap,但是bootstrap文档指出:
如果一行中放置12列以上,则每组 多余的列将作为一个单元包装在新行上
https://getbootstrap.com/docs/4.1/layout/grid/#column-wrapping