背景:
技术栈:vue3+vant4
相关代码如下:
<van-field
v-model="fieldValue"
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" />
</van-popup>
const columns = [
{ text: '杭州', value: 'Hangzhou' },
{ text: '宁波', value: 'Ningbo' },
{ text: '温州', value: 'Wenzhou' },
{ text: '绍兴', value: 'Shaoxing' },
{ text: '湖州', value: 'Huzhou' },
];
const fieldValue = ref('温州');
const showPicker = ref(false);
const onConfirm = ({ selectedOptions }) => {
showPicker.value = false;
fieldValue.value = selectedOptions[0].text;
};
问题:
根据上面的例子,因为有初始值,比如上述例子中的温州,点开弹出层时显示选中的是列表中的杭州,和初始值温州不符,但是如果更改选择值,比如更改成绍兴,那么再次点击弹出层,弹出层显示选中的是列表中的绍兴,此时是正确的。问题是第一次初始化赋值,点击弹出层显示的好像是列表中的第一项
van-field
和van-picker
是两个组件,这个fieldValue
就只是显示选择的文字,改它的初始值没用,你要想给van-picker
赋初始值应该用它的双向绑定