之前记录了一个v-for循环的动态切换class,现在记录一个非循环的
一、(非循环)html代码
其中shows四在data中定义的一个初始值,我所定义的-1是,初始状态谁都不选中,如果想初始状态是选中的就直接shows=1/shows=2就可以了
(二、循环元素)
效果如图 数值是动态复制的
html:
<template v-for="tab in tabs">
<el-col :span="3" :key="tab.state" :class="{active: statusShow == tab.state}">
<div class="status" :class="{active: statusShow == tab.state}"
@click="chooseStatus(tab.state)"> {{tab.name}} ({{tab.count}})
</div>
</el-col>
</template>
script
<script>
const tabs = [
{ name: '全部', count: 0, state: ''},//全部
{ name: '待支付', count: 0, state: 2},//待支付
{ name: '已完成', count: 0, state: 1},//完成
{ name: '放弃支付', count: 0, state: 3},//放弃支付
];
export default {
data(){
return{
statusShow:'',
tabs,
}
},
mounted(){
this.testCount()
},
methods:{
/**
* 切换选中状态获取对应列表
*/
chooseStatus(state) {
console.log(state);
switch (state) {
case '':
this.statusShow = '';// 全部
break;
case 2:
this.statusShow = 2;// 待支付
break;
case 1:
this.statusShow = 1;// 已完成
break;
case 3:
this.statusShow = 3;// 已取消
break;
}
console.log(this.statusShow);
},
testCount(){//这里可以在接口中那数据 动态复制count,这里我是自己定义的值
this.tabs.map(tab => {
// console.log(tab);
switch (tab.state) {
case '':
tab.count = 100;// 全部
break;
case 2:
tab.count =10;// 待支付
break;
case 1:
tab.count = 60;// 已完成
break;
case 3:
tab.count = 30;// 放弃支付
break;
}
});
}
}
}
</script>
<style lang="scss" scope>
.status {
text-align: center;
border: 1px solid #dcdfe6;
margin-right: 10px;
cursor: pointer;
&:hover {
color: #fff;
background-color:green;;
}
&.active {
background-color: #e75213;
color: #fff;
border: 1px solid currentColor;
}
}
</style>