el-checkbox出现的传值问题以及change事件传默认值

本文讲述了在项目中遇到的checkbox选项过多问题,通过使用Vuex存储后台返回数据,实现实时回显和状态同步。作者详细介绍了如何将数据放入Vuex、监控checklist变化并更新状态的方法,以提高用户体验和数据管理效率。
摘要由CSDN通过智能技术生成

记录项目中实际出现的问题。
项目背景:后台返回数据,需要checkbox回显。一般来说直接遍历回显,但是出现的问题是checkbox的选项太多,还涉及到切换选项,checkbox的选项也会有改变。
解决办法: 再尝试了许多传值办法后无果,最后决定使用vuex存后台返回数据
1.vuex存入后台拿到的数据

computed:{
  /**
   * 获取vuex数据
   * @returns {any}
   */
  checkAllList(){
    return this.$store.getters.getSelectForecastObj;
  }
},

2.checklist存储checkbox所选择的选项。因为要后台返回所有选项,切换选项重新调用接口,所以直接每次接口返回的时候遍历vuex中是否有此选项,然后放入checklist。(就会显示已勾选状态,可能会重复自己处理数据)
3.选择新的数据,watch监听自己的checklist 放入vuex。

checkBox change

场景:因为每次都要监听自己所选的选项是否在vuex中有重复,所以这个事件可以返回自己的处理的选项。

<el-checkbox v-model="checkList" @change="checked=>handleCheckEvent(checked,item)>
</el-checkbox>

checked 是自己操作的状态 item是你操作的选项(更方便操作)

好的,以下是一个简单的例子: 首先,在你的Vue组件中引入el-checkbox组件: ```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> </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> <div> <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> <ul> <li v-for="option in selectedOptions" :key="option.id">{{ option.label }}</li> </ul> </div> </div> </template> ``` 在上面的代码中,我们使用v-if指令来检查selectedOptions数组是否为空,如果不为空,则显示选中的选项列表。我们使用v-for指令来循环遍历selectedOptions数组,并显示每个选项的标签。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值