在h5正常双向绑定数据,但是移动端的时候v-model就无效了,初始化不能正常选择,改变方法可以执行,但是selectedOption不变,这是什么原因如何解决?
<template>
<select class="select" name="select" v-model="selectedOption" @change="updateValue">
<option
v-for="item in props.options"
:value="item.value"
:key="item.value"
>
{{ item.text }}
</option>
</select>
</template>
<script setup lang="ts">
import { ref, watch } from 'vue';
type Options = {
text: string;
value: string | number;
selected?: boolean;
[key: string]: any;
}
type Props = {
modelValue?: string | number;
options?: Array<Options>;
};
const props = withDefaults(defineProps<Props>(), {
modelValue: '',
options: null,
});
const emit = defineEmits(['update:modelValue']);
const selectedOption = ref(props.modelValue);
const updateValue = () => {
emit('update:modelValue', selectedOption.value);
};
</script>
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/select
原生的select本身就没有value属性,没法使用v-model。这里你应该在v-for循环的option元素上,按照条件设置selected属性。