vue 实现标签多选/反选
2021-07-07 本文已影响0人
远方_1d2a
因为是学习vue我也是刚入门,只是简单的记录一下学习过程中用到的小组件和小问题,就不做其他的描述了
需求:标签的多选/反选
我使用的是 Element组件,具体安装就不说了自行百度
使用 el-row 嵌套 el-button 的方法:
<el-row class="wp-list">
<el-button
class="margin-top-10"
v-for="item in interestList"
:key="item.interestName"
:class="{ active: item.isSelected }"
@click="selected(item)"
>{{ item.interestName }}</el-button
>
</el-row>
在data中初始化数据
data() {
return {
interestList: [],//用来初始化数据 例 PS:[{id:1,interestName:"标签1",isSelected:false}] 这个可以根据自己的需求自行定义 我在数据中默认添加了一个isSelected字段用来区别标签是否选中 true:选中状态 ,false:未选中状态
interestSelected: [] //保存选择标签 例 PS:[1,2,4]//存放内容为标签的id 此值唯一(可自行根据自己的需求定义)
}
}
定义标签style
//定义选中状态的背景和边框颜色(可根据需求自行定义)
<style scoped>
.margin-top-10 {
margin-top: 10px;
}
.active {
background: #fd7522;
border: 1px solid #fd7522;
color: #fff;
}
</style>
定义方法 用以响应修改点击时标签的状态
methods: {
selected(item) {
//点击时状态置反 true -> false / false -> true
item.isSelected = !item.isSelected
//判断当修改过的状态为true时将此标签id存放进数组中
if (item.isSelected) {
this.interestSelected.push(item.id)
} else {
//否则将此id从数组中移除
this.interestSelected.splice(this.interestSelected.indexOf(item.id), 1)
}
}
}
拿到此选中标签集合可进行后续操作,比如说上传到服务器更新数据库等等
下面是效果图:
效果预览2021.07.07 17:21:06 周三 多云