Я использую Laravel 6 и Vue.js 2.
Я использую цикл for, чтобы перебирать пользователей и отображать их информацию в div, как показано ниже.
У меня есть категорияимена хранятся в user.pivot.demo2. Пользователи распределены по категориям через lodash
_.orderBy(this.category.users, ['pivot.demo2', 'pivot.demo3'])
Мне нужно, чтобы div с классом строки отображался только один раз для каждой категории. У меня установлено имя категории, которое отображается только в том случае, если имя категории является первым в списке или не совпадает с предыдущим именем. Это разделяет всех пользователей по категориям при отображении и помещает заголовок категории поверх их предполагаемых элементов div и работает просто отлично. Но мне нужно, чтобы внешний div с классом строки создавался только один раз для каждой категории, а затем заполнялся пользовательским div с классом col-lg-4.
В Blade Laravel я бы просто использовал что-то вроде
@if(category != the-same-category)
<div class="row">
@endif
if (category == the-same-category)
<div class="col-lg-4">{{ User.name }} </div>
@endif
@if(category != the-same-category)
</div>
@endif
Это позволило бы div с классом строки показывать только один раз для каждой категории, но внутренние div с классом col-lg-4 повторять на каждом цикле. Это также закроет div в конце условия, и каждая категория будет иметь свои собственные div с пользователем внутри одного ряда div. Кажется, я не могу найти опцию Vue.js, которая позволила бы этот тип поведения. Кто-нибудь может предложить решение на JavaScript или Vue.js?
Пока у меня есть код ниже
<div class="outer-div text-center" v-for="(user, index) in the_category.users" :key="user.id">
<div v-if="index === 0 || user.pivot.demo2 != the_category.users[index -1].pivot.demo2">
<div class="text-center header-one">
<h2>{{ user.pivot.demo2 }}</h2>
</div>
<hr />
</div>
<div class="row d-flex justify-content-center"> // display once per category
<div class="outer-profile-div col-md-4"> // display every loop
<div class="user-name text-center">{{ user.name }}</div>
<div class="user-title text-center">{{ user.title }}</div>
</div>
</div>
Моя общая цель - показать (.outer-profile-div)Следуйте друг за другом и оберните, как типичные div начальной загрузки, в .row, сохраняя при этом отзывчивый характер начальной загрузки. Я не против использования CSS, JavaScript, Vue.js или чего-либо еще, что даст желаемые результаты.