【前端element-ui】对于封装el-select和checkbox-group的多选控件导致数据双向绑定失败问题的处理

一、关于通过父组件props传参el-select【下拉多选模式】双向绑定失败问题处理方式

1、this.$emit("change", val); 采用change二不是input

2、对_value赋值不能直接使用"="号,而是push

html 复制代码
<template>
  <div>
      <el-select v-model="_value" multiple clearable placeholder="请选择选项" @change="handleValue">
        <el-option v-for="(v, index) in options" :key="index" :value="v" :label="v"></el-option>
      </el-select>
  </div>
</template>
<script>

export default {
  name: "multiple",
  props:{
    value:{
      type: Array,
      default: () => {
        return []
      }
    },
    options:{
      type: Array,
      default: () => {
        return []
      }
    },
  },
  computed:{
    _value: {
      get() {
        return this.value;
      },
      set(val) {
        this.$emit("change", val);
      }
    }
  },
  methods: {
    handleValue(data){
      this._value.splice(0, this._value.length);
      data.forEach(el=>{
        this._value.push(el)
      })
    }
  }
}
</script>

二、关于通过父组件props传参checkbox-group【多选框】双向绑定失败问题处理方式

1、内部事件采用@input而不是@change="handleValue"

2、对_value赋值不能直接使用"="号,而是push

html 复制代码
<template>
  <div>
      <el-checkbox-group v-model="_value" @input="handleValue">
        <el-checkbox v-for="(v, index) in options" :key="index" :label="v" >{{v}}</el-checkbox>
      </el-checkbox-group>
  </div>
</template>
<script>

export default {
  name: "checkbox",
  props:{
    value:{
      type: Array,
      default: () => {
        return []
      }
    },
    options:{
      type: Array,
      default: () => {
        return []
      }
    },
  },
  computed:{
    _value: {
      get() {
        return this.value;
      },
      set(val) {
        this.$emit("change", val);
      }
    }
  },
  methods: {
    handleValue(data){
      this._value.splice(0, this._value.length);
      data.forEach(el=>{
        this._value.push(el)
      })
    }
  }
}
</script>
相关推荐
梦曦i1 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队1 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌恩大侠2 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
yume_sibai2 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
qiuhaipeng13 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
zzz_23683 小时前
个人 AI 记忆如何跨工具复用:用 Markdown、索引和 Skill 搭一个可治理的记忆库
前端·人工智能·react.js·前端框架·agent·agent测评
剑之所向4 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
计算机魔术师5 小时前
GPT-6 Astra幻觉砍到2%,却被一种老招数轻松绕过
前端
cjy0001115 小时前
2026AI 产品如何从一次性 Demo 变成可重复使用的业务工具?
前端·人工智能·fde
IT_陈寒5 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端