Element UI ColorPicker 实时更新绑定值并转换 Hex 颜色的完整方案

Element UI ColorPicker 实时更新绑定值并转换 Hex 颜色的完整方案

在 Element UI 的 ColorPicker 组件中,默认需要通过确认按钮(或关闭颜色选择面板)才会触发 v-model 的更新。若希望实时更新绑定值(如拖动选色时立即生效),可以通过监听 active-change 事件实现。以下是具体解决方案:

html 复制代码
<template>
  <el-color-picker 
    v-model="color" 
    @active-change="handleActiveChange" 
  />
</template>

<script>
export default {
  data() {
    return {
      color: ''
    }
  },
  methods: {
    handleActiveChange(newColor) {
      // 直接更新绑定值,无需等待确认
      this.color = newColor;
    }
  }
}
</script>

至此,不需要颜色转换的童鞋已经可以右上角点叉了。但是我们项目里面用hex格式会方便一些,然而此处的active-change的参数中color字符串的格式是rgb的,因此还需要找一下有没有方案能转换成hex格式。于是看到colorPicker的配置项里面有color-format,于是就走了以下弯路:

html 复制代码
<template>
  <el-color-picker 
    v-model="color" 
    color-format="hex"
    @active-change="handleActiveChange" 
  />
</template>

结果就是配置了之后active-change中还是接收到rgb格式的字符串。这个时候必须狠狠的阅读一下源码,准备在心里制裁审判写这个代码的家伙学习一下大佬的思路

这里的displayedRgb是把颜色统一成rgb格式,方便后面对比颜色是否相同。所以color-format并不能影响active-change的传参,那么只能考虑自行转换了。本来已经准备在AI上面copy一段rgb转hex的代码,转头又想看看element-ui的大佬是怎么转换的颜色,结果发现人家早就在colorPicker中提供了一个处理颜色Color类。于是再次狠狠阅读一下Color的源码。

好好好,原来谜底就在谜面上

改造一下代码

html 复制代码
<script>
import Color from 'element-ui/packages/color-picker/src/color';

export default {
  data() {
    return {
      color: ''
    }
  },
  methods: {
    handleActiveChange(newColor) {
      const newColor = new Color({
        enableAlpha: false,
        format: 'hex'
      })
      newColor.fromString(colorStr);
      this.value = newColor.value;
    }
  }
}
</script>

okk, 问题解决,下班收工

相关推荐
全栈前端老曹1 小时前
【前端组件封装教程】第3节:Vue 3 Composition API 封装基础
前端·javascript·vue.js·vue3·组合式api·组件封装
BruceeLeee1 小时前
关于vue3中使用el-upload组件上传图片后删除和预览按钮不显示的问题
vue.js
源码宝1 小时前
企业项目级医院随访系统源码,患者随访管理系统,技术框架:Java+Spring boot,Vue,Ant-Design+MySQL5
java·vue.js·spring·程序·医院管理系统·随访·随访系统源码
香香爱编程2 小时前
electron对于图片/视频无法加载的问题
前端·javascript·vue.js·chrome·vscode·electron·npm
蒲公英源码4 小时前
基于PHP+Vue+小程序快递比价寄件系统
vue.js·小程序·php
许___5 小时前
el-table多选模式下跨分页保留当前页选项
javascript·vue.js
程序定小飞6 小时前
基于springboot的学院班级回忆录的设计与实现
java·vue.js·spring boot·后端·spring
攀小黑7 小时前
基于若依-内容管理动态修改,通过路由字典配置动态管理
java·vue.js·spring boot·前端框架·ruoyi
Rysxt_7 小时前
Vuex 教程 从入门到实践
前端·javascript·vue.js
一 乐10 小时前
高校教务|教务管理|基于springboot+vue的高校教务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·教务管理