VueJS 将类切换到表中的特定元素

Jon*_*sen 2 vue.js vuejs2

我似乎无法弄清楚如何在表格中的特定项目上切换类。我正在使用 v-for 循环数据并将其打印给用户。目标是在用户单击表格内的特定元素时切换类。当我尝试添加 v-bind:class="{'active' :isActive} 时,它只是将该类添加到所有这些类中,而不是特定的。

<table>
     <tbody>
           <tr v-for="(item, index) in tableFilter"  @click="selectThis(item)" v-bind:class="{'active': isActive}">
                 <td>{{item.Name}}</td>
                 <td>{{item.Address}}</td>
                 <td>{{item.Telephone}}</td>
                 <td>{{item.Email}}</td>
            </tr>
     </tbody>
</table>

export default  {
    data() {
          return {
              isActive: false,
              data: data
          }
    },
    methods: {
          selectThis(val, index) {
              this.isActive =! this.isActive
          }
     },
    computed: {
       tableFilter() {
           return data;
       }
    }
Run Code Online (Sandbox Code Playgroud)

tha*_*ksd 5

使用该v-for指令的元素内的任何绑定都将应用于由v-for.

如果一次只有一个元素处于活动状态,您可以跟踪活动索引:

data() {
  return {
    activeIndex: null,
    data: data,
  }
},
methods: {
  selectThis(val, index) {
    this.activeIndex = index;
  }
}
Run Code Online (Sandbox Code Playgroud)

并使用它:

<tr 
  v-for="(item, index) in tableFilter"  
  @click="selectThis(item)" 
  v-bind:class="{'active': activeIndex === index}"
>
Run Code Online (Sandbox Code Playgroud)

如果多个元素可以在给定时间处于活动状态,您可以在item对象本身上跟踪每个元素的活动状态:

<tr 
  v-for="(item, index) in tableFilter"  
  @click="item.active = !item.active" 
  v-bind:class="{'active': item.active}"
>
Run Code Online (Sandbox Code Playgroud)