根据条件添加类(对于带有v-for的最后渲染元素)

Inc*_*ble 3 javascript vue.js v-for

我正在Vue.js中创建一个表并使用该v-for指令呈现一些列:

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

有一个未知的元素计数,我必须在最后一个渲染元素中添加一个类.我不能使用:last-child:last-of-type因为它不是<td>一行中的最后一个元素,它只是最后一个渲染元素,v-for但也有以下<td>元素.

我们怎样才能在Vue.js中实现这一目标?

Mih*_*nut 8

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

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

CSS类:

.active {
   //some style
}
Run Code Online (Sandbox Code Playgroud)

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

v-bind:class="{ active: index==items.length-1 }"
Run Code Online (Sandbox Code Playgroud)

工作范例:

new Vue({
  el: '#app',
  data: {
    items:[{"name":"A"},{"name":"B"},{"name":"C"}]
  }
})
Run Code Online (Sandbox Code Playgroud)
.active {
  color: red;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)