Как создать связсь v-for в v-if, не нарушив рекомендации?

<div class="catalog-section" v-for="category in categories" :key="category.index">
          <h2 class="catalog-section--title title-default">{{category.name}} {{category.id}}</h2>
          <p class="catalog-section--label label-default" v-if="category.label">{{category.label}}</p>
          <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4" v-for="item in posts" v-if="item.category === category.id" :key="item.index">
              <product-item :item=item />
            </div>
          </div>
    </div>


Так работает но VScode ругается, да и хочется соблюсти правила.
  • Вопрос задан
  • 284 просмотра
Решения вопроса 3
@architawr
"Ok, Google" и все твои проблемы решены
<div class="catalog-section" v-for="category in categories" :key="category.index">
          <h2 class="catalog-section--title title-default">{{category.name}} {{category.id}}</h2>
          <p class="catalog-section--label label-default" v-if="category.label">{{category.label}}</p>
          <div class="row">
              <template v-for="item in posts">
                 <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4"  v-if="item.category === category.id" :key="item.index">
                    <product-item :item=item />
                 </div>
              </template>
          </div>
    </div>

?
Ответ написан
0xD34F
@0xD34F Куратор тега Vue.js
Сделайте вычисляемое свойство, где будут все нужные данные - это избавит от необходимости использовать v-if.

Что-то вроде:

categoriesWithPosts() {
  return this.categories.map(n => ({
    ...n,
    posts: this.posts.filter(m => m.category === n.id),
  }));
},
Ответ написан
Комментировать
Fragster
@Fragster
помогло? отметь решением!
<div class="catalog-section" v-for="category in categories" :key="category.index">
          <h2 class="catalog-section--title title-default">{{category.name}} {{category.id}}</h2>
          <p class="catalog-section--label label-default" v-if="category.label">{{category.label}}</p>
          <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4" v-for="item in posts.filter(item => item.category === category.id)" :key="item.index">
              <product-item :item=item />
            </div>
          </div>
    </div>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы