环境:vue3,vant4
背景:Picker 作为用于辅助表单填写,搭配 Popup 和 Field 。页面需要给picker设置默认值,city为温州,但是在popup弹出时,picker没有选中温州这个选项,还时停留在杭州。
解决方案:
看了很多解决方案,设置default-indexset ,ColumnIndex。都尝试了,还是不行。而且这些方法,其实在vant4文档中,根本没有写。
很奇怪,后来想到了解决方案。
我设置了van-field的v-model,其实只改变了外部的值。
let formData = reactive({city:'温州'});
popup弹出时,picker的值其实没有改变,需要在van-picker上绑定v-model,设置初始值即可。van-data-picker, 也可以通过这种方式设置(亲测)
<van-popup v-model:show="showPicker" round position="bottom"> <van-picker :columns="columns" @cancel="showPicker = false" @confirm="onConfirm" v-model="defaultCity" /> </van-popup> const defaultCity = ref(['Wenzhou'])
具体完整代码如下:
<template> <van-cell-group> <van-field v-model="formData.city" is-link readonly label="城市" placeholder="选择城市" @click="showPicker = true" /> <van-popup v-model:show="showPicker" round position="bottom"> <van-picker :columns="columns" @cancel="showPicker = false" @confirm="onConfirm" v-model="defaultCity" /> </van-popup> </van-cell-group> </template>
<script setup> import { ref } from 'vue'; const columns = [ { text: '杭州', value: 'Hangzhou' }, { text: '宁波', value: 'Ningbo' }, { text: '温州', value: 'Wenzhou' }, { text: '绍兴', value: 'Shaoxing' }, { text: '湖州', value: 'Huzhou' }, ]; let formData = reactive({city:'温州'}); const defaultCity = ref(['Wenzhou']); const showPicker = ref(false); const onConfirm = ({ selectedOptions }) => { showPicker.value = false; formData.city = selectedOptions[0].text; }; </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!