Как мне перебирать массив во Vue вдвое реже, чем есть элементы?

У меня есть массив данных:

[
  {
    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.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
425
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто выполнить итерацию по массиву, поместить каждый элемент в 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, но в документации по начальной загрузке указано:

If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line

https://getbootstrap.com/docs/4.1/layout/grid/#column-wrapping

Спасибо @puelo, это действительно решает мою проблему. Я отмечаю это как правильное и ценю быстрый ответ, но мне любопытно, есть ли у кого-нибудь ответ и на мой исходный вопрос. Мне всегда интересно изучать новые способы достижения целей.

David Vasquez 08.07.2018 22:54

Другие вопросы по теме