使用vue3 + el-checkbox-group的 change事件 做一个数据筛选
时间: 2023-12-10 10:37:13 浏览: 180
好的,可以参考下面的代码示例:
HTML模板部分:
```html
<template>
<div>
<el-checkbox-group v-model="selectedOptions" @change="handleFilterChange">
<el-checkbox :label="option" v-for="option in options" :key="option">{{ option }}</el-checkbox>
</el-checkbox-group>
<ul>
<li v-for="(item, index) in filteredData" :key="index">{{ item }}</li>
</ul>
</div>
</template>
```
JavaScript部分:
```javascript
<script>
export default {
data() {
return {
options: ['Option A', 'Option B', 'Option C', 'Option D'],
selectedOptions: [],
data: ['Data 1', 'Data 2', 'Data 3', 'Data 4', 'Data 5', 'Data 6'],
filteredData: []
}
},
methods: {
handleFilterChange() {
this.filteredData = this.data.filter(item => {
// 如果 selectedOptions 数组为空,则返回 true,表示不做筛选
if (this.selectedOptions.length === 0) {
return true
}
// 如果 selectedOptions 数组不为空,则只返回包含选中选项的数据
return this.selectedOptions.includes(item.substr(-1))
})
}
}
}
</script>
```
以上示例代码中,`options`数组是选项列表,`selectedOptions`是选中的选项数组,`data`数组是需要筛选的数据数组,`filteredData`是筛选后的数据数组。
在模板中使用`el-checkbox-group`组件展示选项,绑定`selectedOptions`实现选中状态的绑定。同时,监听`change`事件,当选项的选中状态发生改变时触发`handleFilterChange`方法。
在`handleFilterChange`方法中,使用`filter`方法对`data`进行筛选。如果`selectedOptions`数组为空,则返回`true`,表示不做筛选;否则,只返回包含选中选项的数据。
最后,在模板中使用`v-for`指令展示筛选后的数据即可。
阅读全文