【前端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>
相关推荐
程序员黑豆38 分钟前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
To_OC1 小时前
踩了个 TS 的坑之后,我终于把 type 和 interface 掰明白了
前端·react.js·typescript
GreenTea1 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
浮生望2 小时前
前端API工程化:用 Mock 数据与 Axios 配置实现独立于后端的并行开发
前端
Devlab2 小时前
LVGL设计大师——网页版anyui来了!!
嵌入式硬件·物联网·低代码·ui·iot
万少2 小时前
给 DeepSeek Harness 装个"应用商店":一条命令,595 个插件随你逛
前端·javascript·后端
波波0072 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
Brown.alexis3 小时前
es6知识点1-自备使用
前端·ecmascript·es6
小爬的老粉丝4 小时前
JavaScript 纯前端预览 WPS:先识别容器,再路由解析器
前端·javascript·wps
计算机魔术师5 小时前
新兴多智能体系统的模式与问题
前端