<template>
<
el-
checkbox :indeterminate="isIndeterminate" v-mod
el="checkAll" @
change="handleCheckAll
Change">全选</
el-
checkbox>
<
el-
checkbox-group v-mod
el="checkedCities" @
change="handleCheckedCities
Change">
由于需要个性化checkbox的点击事件,不得以研究了一下点击事件。奈何这个项目组居然没有checkbox的样式,看着这原生的样式丑到爆,不得以研究了一下checkbox。(radio也是同理,区别是最好通过条件控制只能单选。)
这里先附上样式灵感来源地址
如果有需要变更图标的,可以在上述地址选取。
<el-checkbox @change="(val) => handleCheckAllChange(val, scope.row)">{{ scope.row.label }}</el-checkbox>
:indeterminate="isIndeterminate"
v-model="checkAll"
@change="checked=>handleCheckAllChange(checked, val, i)"
>{{key}}</el-checkbox>
{{checkList}}
<el-checkbox-group v-model="checkList">
<el-checkbox :label="item.name" v-for="(item,index) in checkListArray"></el-checkbox>
</el-checkbox-group>
<span @click=.
el-checkbox勾选后逻辑取消勾选,点击后参数传递和显示不一致的异常错误
问题描述: 父组件传递数据给子组件,用来控制el-checkbox的勾选,勾选后传递参数给父组件进行逻辑处理,比如某种条件下需要取消勾选,讲数据修改后再次点击勾选,发现传递过来的勾选的数据和当前勾选状态不一致,虽然勾选框没有勾选,但是传递的数据是一直在进行勾选的操作。
解决方法:在勾选change的事件中用this.$nextTick。
父组件代码
<template>
<template>
<el-checkbox-group v-model="checkedList">
<el-checkbox v-for="item in options" :label="item.value" :key="item.id">
{{ item.label }}
</el-checkbox>
</el-checkbox-group>
</template>
<script>
export default {
data() {
return {
checkedList: [], // 选中的值将存储在这个数组中
options: [
{ id: 1, label: '选项1', value: 'option1' },
{ id: 2, label: '选项2', value: 'option2' },
{ id: 3, label: '选项3', value: 'option3' }
</script>
在上面的代码中,我们使用了el-checkbox-group和el-checkbox组件来创建多选框。我们使用v-model指令将选中的值存储在checkedList数组中。在el-checkbox组件中,我们使用label属性来指定每个选项的值。
接下来,我们可以在组件中使用computed属性来获取选中的值:
```javascript
computed: {
selectedOptions() {
return this.options.filter(option => this.checkedList.indexOf(option.value) !== -1)
在上面的代码中,我们使用filter()方法过滤出选中的选项,并将它们存储在selectedOptions数组中。
最后,我们可以在模板中使用selectedOptions数组来显示选中的选项:
```javascript
<template>
<el-checkbox-group v-model="checkedList">
<el-checkbox v-for="item in options" :label="item.value" :key="item.id">
{{ item.label }}
</el-checkbox>
</el-checkbox-group>
<div v-if="selectedOptions.length > 0">
<h4>选中的选项:</h4>
<li v-for="option in selectedOptions" :key="option.id">{{ option.label }}</li>
</template>
在上面的代码中,我们使用v-if指令来检查selectedOptions数组是否为空,如果不为空,则显示选中的选项列表。我们使用v-for指令来循环遍历selectedOptions数组,并显示每个选项的标签。