【问题标题】:Add class based on condition (for last rendered element with v-for)根据条件添加类(对于使用 v-for 的最后呈现的元素)
【发布时间】:2018-03-13 08:22:21
【问题描述】:

我正在 Vue.js 中制作一个表格并使用 v-for 指令渲染一些列:

<td v-for="(item, index) in items"> {{ item.name }} </td>

有一个未知的元素计数,我必须为最后渲染的元素添加一个类。我不能使用:last-child:last-of-type,因为它不是连续的最后一个&lt;td&gt; 元素,它只是带有v-for 的最后一个渲染元素,但也有以下&lt;td&gt; 元素。

我们如何在 Vue.js 中实现这一点?

【问题讨论】:

    标签: javascript vue.js v-for


    【解决方案1】:

    你必须使用v-bind:class 指令。

    <td v-for="(item, index) in items"
        v-bind:class="{ active: index==items.length-1 }"> {{ item.name }} </td>
    

    CSS 类:

    .active {
       //some style
    }
    

    解决方案是检查元素的index是否等于items.length-1

    v-bind:class="{ active: index==items.length-1 }"
    

    工作示例

    new Vue({
      el: '#app',
      data: {
        items:[{"name":"A"},{"name":"B"},{"name":"C"}]
      }
    })
    .active {
      color: red;
    }
    <script src="https://unpkg.com/vue"></script>
    
    <div id="app">
      <table>
        <tr>
          <td v-for="(item, index) in items"
              v-bind:class="{ active: index==items.length-1 }"> {{ item.name }} </td>
        </tr>
      </table>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-08
      • 2017-10-26
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 2022-07-29
      • 2019-05-30
      • 2020-08-13
      相关资源
      最近更新 更多