van-picker組件default-index屬性設(shè)置不生效踩坑及解決
van-picker組件default-index屬性設(shè)置不生效
官方文檔:default-index 單列選擇時(shí),默認(rèn)選中項(xiàng)的索引 number | string 0
defaultIndex 這個(gè)屬性只是一個(gè)初始值,
如果需要?jiǎng)討B(tài)改變 index索引:
建議使用 picker 實(shí)例的 setIndexes 方法
通過 ref 可以獲取到 Picker 實(shí)例并調(diào)用實(shí)例方法,
setIndexes 設(shè)置所有列選中值對(duì)應(yīng)的索引 indexes -
// 1.給van-picker設(shè)置ref,如ref="van_picker"
<van-popup v-model="showPicker" position="bottom">
<van-picker
show-toolbar value-key="label" ref="van_picker"
:columns="columns" :default-index="defaultBuIndex"
@confirm="onConfirm" @cancel="showPicker = false"
/>
</van-popup>
// 2. 在需要的方法中調(diào)用:
this.$nextTick(() =>{
this.$refs.van_picker.setIndexes([0]) // 注意這里是數(shù)組[索引值]
})vant picker組件踩坑
vant Picker組件,不顯示頂部欄,change事件拿到的值有1-2s延遲問題
ui設(shè)計(jì)如圖

因需求要求,picker去掉頂部欄,點(diǎn)擊下方確認(rèn)按鈕的時(shí)候獲取選中的值
方法一
綁定change事件,選項(xiàng)改變時(shí)觸發(fā)(但是有1s的延遲,操作太快了會(huì)取不到值,不可?。?/p>
<van-picker
? ? :show-toolbar="true"
? ? :columns="reason"
? ? ref="picker"
? ? @change="change"
? />
? ? <div class="btn" @click="handlePopSubmit('reason')">確認(rèn)</div>
change(value){
//單列:Picker 實(shí)例,選中值,選中值對(duì)應(yīng)的索引
//多列:Picker 實(shí)例,所有列選中值,當(dāng)前列對(duì)應(yīng)的索引
}方法二
通過使用ref,調(diào)用ref的confirm方法(和方法一是一樣的,有1s的延遲,操作太快了會(huì)取不到值)
<van-picker
? ? :show-toolbar="true"
? ? :columns="reason"
? ? ref="picker"
? ? ref="pick"
? />
? <div class="btn" @click="handlePopSubmit('reason')">確認(rèn)</div>
handlePopSubmit(){
?? ?console.log('選中的值',this.$refs.picker.getValues)
}方法三
有點(diǎn)笨拙,但是不會(huì)出問題
vant-picker的show-toolbar設(shè)置為true,但是在頁面上對(duì)頂部的導(dǎo)航欄樣式隱藏(例如:display:none)
<van-picker
? ? :show-toolbar="true"
? ? :columns="reason"
? ? ref="picker"
? ? @confirm="handleReasonChange"
? />
? <div class="btn" @click="handlePopSubmit('reason')">確認(rèn)</div>
handleReasonChange(value, index) {
//value :選中的值 取值即可
//index: 下標(biāo) ??
? }
handlePopSubmit(){
?? ? let pickReason = (this.$refs.picker as any).$el.children[0].children[1]; //拿到頂部欄的確認(rèn)元素
? ? ? pickReason.click(); //執(zhí)行一下
?}目前想到的解決辦法只有這三種!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring boot 和Vue開發(fā)中CORS跨域問題解決
這篇文章主要介紹了Spring boot 和Vue開發(fā)中CORS跨域問題解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
vue限制實(shí)現(xiàn)不登錄無法進(jìn)入其他頁面
本文主要介紹了vue限制實(shí)現(xiàn)不登錄無法進(jìn)入其他頁面,vue限制不登錄,通過url進(jìn)入其他頁面強(qiáng)制回到登錄頁面;已經(jīng)登錄的情況下,不可以再進(jìn)入登錄界面,感興趣的可以了解一下2024-01-01
詳解webpack+vue-cli項(xiàng)目打包技巧
本篇文章主要介紹了詳解webpack+vue-cli項(xiàng)目打包技巧 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
如何利用 vue實(shí)現(xiàn)鼠標(biāo)懸停時(shí)顯示元素或文本
Vue.js 是一種流行的 JavaScript 框架,可以使 Web 應(yīng)用程序的開發(fā)變得更加輕松和高效,這篇文章主要介紹了在 vue 中鼠標(biāo)懸停時(shí)顯示元素或文本,需要的朋友可以參考下2023-05-05
Vue?vant-ui使用van-uploader實(shí)現(xiàn)頭像上傳功能
這篇文章主要介紹了Vue?vant-ui使用van-uploader實(shí)現(xiàn)頭像圖片上傳,項(xiàng)目中是使用有贊vant-ui框架實(shí)現(xiàn)的頭像上傳替換功能,用到了封裝的圖片壓縮封裝之后再去上傳圖片this.$imgUpload.imgZip(),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-05-05
如何使用yarn創(chuàng)建vite+vue3&&electron多端運(yùn)行
這篇文章主要介紹了如何使用yarn創(chuàng)建vite+vue3&&electron多端運(yùn)行,本文分步驟給大家介紹的非常詳細(xì),包括使用yarn創(chuàng)建vite+vue3項(xiàng)目會(huì)遇到哪些問題,感興趣的朋友跟隨小編一起看看吧2024-03-03

