elementui的el-select点击clearable后value默认会为空字符串,如何全局修改成为null?
<template>
<div>
value:{{ JSON.stringify(value) }}
<el-select v-model="value" clearable placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</template>
<script>
export default {
data() {
return {
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}],
value: null
}
}
}
</script>
elementui的el-select点击clearable后value默认会为空字符串,并不是我默认设置的null,我可以通过@clear来改变value的值,但是我的项目已经非常庞大,牵扯的页面有很多,怎么在影响页面最小的情况下,全局去更改呢?
回复
1个回答
test
2024-07-03
是否会引发bug ,自己测一下,我只是简单看了一下
vue2执行这段代码就行
this.$options.components.ElSelect.options.methods.deleteSelected =
function deleteSelected(event) {
event.stopPropagation();
// 改动在这,原始的是这样 var value = this.multiple ? [] : '';
var value = this.multiple ? [] : null;
this.$emit("input", value);
this.emitChange(value);
this.visible = false;
this.$emit("clear");
};
vue3 源代码参考 : node_modules\element-plus\lib\components\select\src\useSelect.js deleteSelected(方法名)
main.ts
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
app.use(ElementPlus);
app._context.components.ElSelect.mounted = function () {
let self = this;
this.handleClearClick = function (event$1) {
event$1.stopPropagation();
const value = self.$props.multiple ? [] : null;
if (value === []) {
for (const item of self.selected) {
if (item.isDisabled) value.push(item.value);
}
}
self.$emit("update:modelValue", value);
if (self.$props.modelValue !== value) {
self.$emit("change", value);
}
self.hoverIndex = -1;
self.visible = false;
self.$emit("clear");
};
};
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容