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的值,但是我的项目已经非常庞大,牵扯的页面有很多,怎么在影响页面最小的情况下,全局去更改呢?
回答:
是否会引发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.tsimport 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");
};
};
回答:
没必要修改为 null
,使用 null
会引发一些其他的问题,比如说默认值设置失败,开启多选属性时后续数据改变可能无法被监听的问题。
回答:
我不感觉这是一个问题呀,你完全没必要去让他全变成null吧?你为什么会有这样的需求?你的项目每个页面的逻辑都是独立的,而且你判断时""和null的判断几乎是一样的。
以上是 elementui的el-select点击clearable后value默认会为空字符串,如何全局修改成为null? 的全部内容, 来源链接: utcz.com/p/934314.html