如图,我点击checkbox组件会触发select的change事件,然后勾选框会勾不上(确切说是勾上又取消掉了,因为触发了select的change事件),怎样才能让着两个点击事件分开,或者更好的办法?
代码如下:
html:
<el-select v-model="peroidForm.weekCheckList" multiple @change="(val) => handleWeekChange(val)">
<el-option
v-for="(item, index) in weekList"
:key="index"
:value="item.value"
:label="item.label"
>
<el-checkbox v-model="item.isCheck" @change="(val) =>handleCheckBoxWeekChange(val, item)"></el-checkbox>
<span style="margin-left: 8px">{{item.label}}</span>
</el-option>
</el-select>
data
data () {
return {
frequencyEditForm: {
weekCheckList: []
},
weekList: [
{
value: '星期一',
label: '周一',
isCheck: false
},
{
value: '星期二',
label: '周二',
isCheck: false
},
{
value: '星期三',
label: '周三',
isCheck: false
},
{
value: '星期四',
label: '周四',
isCheck: false
},
{
value: '星期五',
label: '周五',
isCheck: false
},
{
value: '星期六',
label: '周六',
isCheck: false
},
{
value: '星期日',
label: '周日',
isCheck: false
}
],
}
}
js:
// select下拉框的change事件
handleWeekChange (val) {
this.weekList.forEach((v) => {
v.isCheck = false
})
val.forEach((el) => {
this.weekList.forEach((v) => {
if (el === v.value) {
v.isCheck = true
}
})
})
},
// checkbox change事件
handleCheckBoxWeekChange (val, item) {
if (val) {
this.frequencyEditForm.weekCheckList.push(item.value)
} else {
let index = this.frequencyEditForm.weekCheckList.findIndex((ele) => ele.value === item.value)
this.frequencyEditForm.weekCheckList.splice(index)
}
}
<el-select v-model="frequencyEditForm.weekCheckList" multiple>
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{
}
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected .check{
}
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected .check:after{
}
.el-select-dropdown.is-multiple .el-select-dropdown__item .check::after{
}
.el-select-dropdown.is-multiple .el-select-dropdown__item .check{
}
</style>