效果图如下:
代码如下:
<template>
<div>
<dl v-for="(listItem,listIndex) in listData" :key="listItem.id">
<div class="flex-box">
<dt>
{{listItem.title}}
dt>
<dd v-for="(minItem,minIndex) in listItem.list" :key="minItem" :class="minIndex==listItem.index?'active':''" @click="handClick(minItem,listIndex,listItem,minIndex)">{{minItem}}dd>
div>
dl>
<div class="list-box">
<h4>你选择的属性:h4>
<p v-if="!Object.keys(chooseList).length">暂无选择p>
<p class="chooseItem" v-for="(value,key) in chooseList" :key="key">{{value}}<span @click="handleDel(key)">xspan>p>
div>
div>
template>
<script>
export default {
data() {
return {
listData: [{
title: '品牌',
id: 1,
list: ['美的', '海尔', '格力', '三星', '惠普', '长虹']
},
{
title: '价格',
id: 2,
list: ['2000-3000', '2100-2500', '3500-6000', '1000-2000', '1500-4000', '6000-7000']
},
{
title: '制冷面积',
id: 3,
list: ['120平方米', '130平方米', '140平方米', '150平方米', '160平方米', '170平方米']
},
],
chooseList:{
// 0:'美的',
//1:'2000-300',
}
}
},
methods: {
handClick(minItem,listIndex,listItem,minIndex){
listItem.index = minIndex
console.log(minItem,listIndex,listItem)
this.$set(this.chooseList,listIndex,minItem)
},
handleDel(key){
console.log(key)
this.$delete(this.chooseList,key)
this.listData[key].index = null
console.log(this.listData)
}
},
}
script>
<style lang="less" scoped>
.flex-box{
display: flex;
}
dl,dd,dt{
cursor: pointer;
}
dl{
border-bottom: 1px dashed #ccc;
}
dd{
margin-left: 10px;
}
dt{
background: gray;
padding: 4px 10px;
color: #fff;
}
.list-box{
display: flex;
align-items: center;
h4{
margin-right: 15px;
}
p{
color: #ccc;
margin-right: 10px;
}
.chooseItem{
border:1px solid red;
padding: 4px 10px;
color: red;
span{
padding-left: 10px;
cursor: pointer;
}
}
}
.active{
color: red;
}
style>