[vue]html标签select会改变value类型??都变成string了?

采用vue写法利用select取第二个值作为value
modelValue类型为number|string

const data:[number|string,number|string][]= [[1, '肖明'],['测试', 1],["id", 5]],

  <select :value="modelValue" @change="selectHandler($event)">
      <option v-for="(item, index) in data" :key="item[0]" :value="item[1]">
                {{ item[0] }}
       </option>
   </select>

js

const selectHandler = (e: Event) => {
    const val = (e.target as HTMLSelectElement).value //问题:不能获取到正确类型?
    //emits('update:modelValue', val)
}



一楼大哥详解可以!!
const modelValueRef = ref<number | string | undefined>()

 <select v-model="modelValueRef">
            <option v-for="(item, index) in enumStrsList" :key="index" :value="item[1]">
                {{ item[0] }}
            </option>
</select>
阅读 1.7k
1 个回答

你用 event.target.value 取到的当然是字符。因为 Vue 会尽量保持 HTML 兼容性,而 DOM 里的属性都是字符类型。

这种时候直接用 v-model 配合 this.modelValue 就好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题