<el-tab-pane label="KYC标签" name="first">
<template v-for="item in labelList">
<div class="title" :style="labelList[0] ? '' : 'margin-top: 12px;'">{{item.name}}</div>
<div class="qian">
<div class="tag">
<span class="Classification"
v-for="(k, index) in item.detailArr"
:key="index"
:class="{active : tabIndex.includes(k) }"
@click="oncheck(k)">
{{k.name}}{{tabIndex.includes(k)}}</span>
</div>
</div>
</template>
</el-tab-pane>
oncheck(item){
if (this.tabIndex.includes(item)) {
//includes()方法判断是否包含某一元素,返回true或false表示是否包含元素,对NaN一样有效
//filter()方法用于把Array的某些元素过滤掉,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素:生成新的数组
this.tabIndex = this.tabIndex.filter(function(ele) {
return ele != item
})
} else {
this.tabIndex.push(item)
}
},
猜测你的
tabIndex
是一个对像数组,使用includes
去匹配的时候不会认为是同一个的。添加的时候还会因为是浅拷贝只是拷贝了内存地址的指向,所以可以匹配上,
如果后续回填的时候是分别填入的,那么就不会被认为是同一个。
一个演示代码:
所以最好在一些例如说元素激活的时候,最好是把元素的唯一
key
收集起来,在判断中使用key
键去匹配。比如说