【前端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>
相关推荐
yuqifang10 分钟前
vue3+typescript+vite封装自己的UI组件库并上传至npm
vue.js·arkui
黄林晴11 分钟前
第一次听到 Tauri 这个词,去学习一下
前端
可可爱爱的你吖18 分钟前
蜂鸟云地图简单实现
前端
布局呆星20 分钟前
Vue3 :生命周期、DOM 操作与自定义组合式函数
前端·javascript·vue.js
147API28 分钟前
多模型路由规则设计实战:第一版系统别做成黑盒
服务器·前端·javascript
xcjbqd037 分钟前
CSS中隐藏元素的多重技巧与应用场景
前端·css
Ruihong37 分钟前
你的 Vue 3 <script setup>,VuReact 会编译成完整的 React 组件
vue.js·react.js·面试
chenbin___40 分钟前
检查hooks依赖的工具(转自千问)
开发语言·前端·javascript·react native·react.js
阿凤211 小时前
uniapp运行到app端怎么打开文件
android·前端·javascript·uni-app