有没有一种方法可以在Vue JS的列表渲染(v-for)中使用条件渲染

时间:2020-04-28 10:52:50

标签: javascript vue.js vuejs2

我在项目中使用列表渲染(v-for)打印数组中的每个项目,以显示有关一系列书籍的信息。

但是,我试图在此循环中使用条件渲染,以便打印许多包含书的类别标签的li元素。

如果数组中没有存储数据,我不希望li在DOM中绘制。例如,对于第一本书Moby Dick,book标签的ul仅包含两个HTML列表项。

这怎么办?到目前为止,我有以下内容...

<ul>
    <li v-for="book in books">

        <div class="item">
            <div class="item-bd">
                <h2>{{ book.title }}</h2>
                <ul class="book-tags>
                    <li v-if="">{{book.tagOne}}</li>
                    <li v-if="">{{book.tagTwo}}</li>
                    <li v-if="">{{book.tagThree}}</li>
                </ul>
            </div>
        </div>

    </li>
</ul>


new Vue({
  el: '#app',
  data: {
    books: [
        {
            title: "Moby Dick",
            tagOne: "Kids Book",
            tagTwo: "Fiction",
            tagThree: ""
        },
        {
            title: "Hamlet",
            tagOne: "All Ages",
            tagTwo: "Shakespeare",
            tagThree: "Classic"
        }
    ]
  }
});

1 个答案:

答案 0 :(得分:1)

根据您的问题,如果要保留三个<li>项目,则只需检查以下各个标签是否存在:

<ul class="book-tags>
  <li v-if="book.tagOne">{{book.tagOne}}</li>
  <li v-if="book.tagTwo">{{book.tagTwo}}</li>
  <li v-if="book.tagThree">{{book.tagThree}}</li>
</ul>