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

时间:2017-08-22 18:47:22

标签: 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;
       }
    }

1 个答案:

答案 0 :(得分:3)

使用v-for指令在元素中的任何绑定都将应用于v-for呈现的每个元素。

如果一次只激活一个元素,则可以跟踪活动索引:

data() {
  return {
    activeIndex: null,
    data: data,
  }
},
methods: {
  selectThis(val, index) {
    this.activeIndex = index;
  }
}

然后使用它:

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

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

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