重写 elementPlus 删除方法拦截前 和 tag 标签删除前提示

<template>
<el-select ref="myselectref" v-model="currentValue" v-bind="$attrs">
<slot name="option">
<el-option v-for="item in $attrs.options" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</slot>
</el-select>
</template>
<script setup>
const { proxy } = getCurrentInstance();
const { value } = defineProps();
const emit = defineEmits();
const currentValue = ref(value);
watch(currentValue, newValue => {
emit('update:modelValue', newValue);
});
onMounted(() => {
// 重写tag 标签删除
proxy.$refs.myselectref.deleteTag = function (event, tag) {
ElMessageBox.confirm("是否删除?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
const index = proxy.$refs.myselectref.states.selected.indexOf(tag);
if (index > -1 && !proxy.$refs.myselectref.selectDisabled) {
const value = proxy.$refs.myselectref.$props.modelValue.slice();
value.splice(index, 1);
emit('update:modelValue', value);
emit('remove-tag', tag.value);
emitChange(value);
}
event.stopPropagation();
focus();
})
.catch(() => {
});
}
// 重写清空
proxy.$refs.myselectref.handleClearClick = function (event) {
ElMessageBox.confirm("是否删除?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
proxy.$refs.myselectref.deleteSelected(event);
})
.catch(() => {
});
}
})
</script>

     

    posted @   前端搬运工bug  阅读(90)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
    · Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
    · 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
    · 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
    · 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
    点击右上角即可分享
    微信分享提示