给ElInputNumber添加prefix
prefix通过props传递进来,通过teleport将el-input__prefix按照input prefix的方式传给el-input__wrapper下面,我这里prefix采用绝对定位,所以放在最后也没关系,不然的话可能需要dom操作了
<script setup lang="ts">
import { onMounted, ref } from 'vue';
const props = defineProps({
prefix: {
type: String,
default: '',
},
});
const inputNumberRef = ref();
const inputNumberEl = ref<HTMLElement>();
onMounted(() => {
const inputNumber = inputNumberRef.value;
const nodes = inputNumber.$refs.input.$el.childNodes as NodeListOf<HTMLElement>;
inputNumberEl.value = Array.from(nodes).find((node) => node.className === 'el-input__wrapper');
});
</script>
<template>
<el-input-number v-bind="$attrs" ref="inputNumberRef" class="sys-input-number" controls-position="right" />
<Teleport
:to="inputNumberEl"
:disabled="!inputNumberEl"
>
<div class="el-input__prefix">
<span class="el-input__prefix-inner">{{ prefix }}</span>
</div>
</Teleport>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
上次更新: 2023/06/01, 12:40:50