element-plus 扩展框为展开状态后,修改数时会自动收起
这个问题通常是因为在更新数据时,Element Plus 的 <el-input-number>
组件触发了一个视图更新,导致它的展开状态被重置。为了解决这个问题,可以通过监听数据更新后重新设置组件的展开状态。
以下是一个简单的例子,演示如何在 Vue 3 和 Element Plus 中解决这个问题:
<template>
<el-input-number
v-model="number"
:min="1"
:max="10"
label="描述文字"
@change="handleChange"
></el-input-number>
</template>
<script setup>
import { ref, watch } from 'vue';
const number = ref(1);
// 监听数值变化,如果发现展开,则重新设置展开状态
const inputNumberRef = ref(null);
watch(number, (newValue, oldValue) => {
if (inputNumberRef.value.$refs.input) {
inputNumberRef.value.$refs.input.dispatchEvent(new Event('input'));
}
});
function handleChange(value) {
console.log('数值改变:', value);
}
</script>
在这个例子中,我们使用了 Vue 3 的 <script setup>
语法,并通过 ref
和 watch
来创建响应式数据 number
并监听其变化。当数值改变时,我们检查 inputNumberRef.value.$refs.input
是否存在,如果存在,则通过 dispatchEvent
方法触发一个新的 input
事件,这样可以使 <el-input-number>
组件重新识别其展开状态。
请注意,这只是一个示例,具体的解决方案可能需要根据实际的应用场景进行调整。
评论已关闭