赞
踩
我这天天的都遇到各种坑,关于自定义,我直接复制粘贴代码都实现不了,研究了一下午,骂骂咧咧了一下午,服气了。官网代码实现不了,就只能 “ 曲线救国 ” 了,哈哈哈
五种程度,每种颜色都不同,回显也需要分不同颜色
<el-select v-model="value1" placeholder="Select" style="width: 240px" clearable > // 核心代码: #label="{ label, value }" 插槽 <template #label="{ label, value }"> <span>{{ label }}: </span> <span style="font-weight: bold">{{ value }}</span> </template> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select>
// 这串代码options自定义是没问题的,但是回显根本不理我啊,我很难受! <el-select v-model="value" multiple placeholder="Select" style="width: 240px"> <el-option v-for="item in colors" :key="item.value" :label="item.label" :value="item.value" > <div class="flex items-center"> <el-tag :color="item.value" style="margin-right: 8px" size="small" /> <span :style="{ color: item.value }">{{ item.label }}</span> </div> </el-option> // 不好使啊,至少在我的项目中是的 <template #tag> <el-tag v-for="color in value" :key="color" :color="color" /> </template> </el-select>
这两种一结合,我觉得我瞬间行了(男人不能说不行)
现实给了我一耳光,并赋予我骂骂咧咧一下午的资格,草(一种植物)
<!-- html -->
<el-form-item label="紧急程度:" class="select-one">
<el-select v-model="item.urgencyLevel" placeholder="单选">
<template #prefix>
<!-- 将前置插槽数据设置为label的值 -->
<span :style="{ color: itemStyleColor(item.urgencyLevel['color']}" style="font-weight:600;">{{itemStyleColor(item.urgencyLevel)['label'] }}</span>
</template>
<!-- options下拉框数据 -->
<el-option v-for="el in urgencyLevels" :label="el.label" :value="el.value">
<span :style="{ color: el.color }">{{ el.label }}</span>
</el-option>
</el-select>
</el-form-item>
// js // options数据 let urgencyLevels = [ { color: '#852527', label: '危急', value: 'critical' }, { color: '#ff2430', label: '紧急且重要', value: 'urgentAndImportant' }, { color: '#ff9100', label: '重要', value: 'important' }, { color: '#D3E713', label: '需关注', value: 'attentionRequired' }, { color: '#40ab99', label: '不重要', value: 'notImportant' } ] // 获取颜色的方法,通过v-model的值来选择当前的回显和颜色 // 我就直接手写了,当然也可以选择用find方法,直接返回的就是一个对象 const itemStyleColor = (val) => { switch (val) { case 'critical': return { color: '#852527', label: '危急' } case 'urgentAndImportant': return { color: '#ff2430', label: '紧急且重要' } case 'important': return { color: '#ff9100', label: '重要' } case 'attentionRequired': return { color: '#D3E713', label: '需关注' } case 'notImportant': return { color: '#40ab99', label: '不重要' } } }
代码到目前为止,效果是这样的,所以嘞,我们就隐藏一个没有动态变色的value
// css
// 将回显的input框内的数据变成和背景色一样的颜色
// 我使用了深度选择器,是用/deep/还是:deep,根据项目来定
:deep(.select-one) {
.el-input__inner {
color: #fff;
}
}
具体为啥我的项目中就实现不了官网的效果,原因我还在查找,找到了之后会写在评论区,如果有小伙伴知道,也欢迎评论;如有不足之处,请指正!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。