我如何在Vue中遍历数组的次数减少一半?

时间:2018-07-06 20:00:33

标签: javascript arrays object vue.js v-for

我有一个数据数组:

[
  {
    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的方式完成此任务。

1 个答案:

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