Vant Weapp組件踩坑:picker的初始賦值解決
在使用vant的picker組件時,我希望有在頁面加載時向數(shù)據(jù)庫獲取值來設(shè)置picker的默認(rèn)值。開始我使用官方文檔中的default-index屬性,并在onLoad方法中進(jìn)行this.setData()。但是這樣做picker的默認(rèn)索引還是0。
于是我又將setData放入onShow()、onReady()方法,均不奏效。(我真的不知道為什么,新建一個空白頁面測試也是這樣)
繼而我查看官方文檔,發(fā)現(xiàn)picker有實(shí)例方法setIndexes(),于是嘗試。
然而我在onLoad()、onReady()方法中通過selectComponent()后再調(diào)用方法,還是不奏效。
只有在onReady方法中才可以這樣設(shè)置索引
wxml:
<van-picker class="picker1" columns="{{columns}}" bind:change="onChange" />
js:(獲取到的數(shù)據(jù)為this.data.index)
onReady(){
const picker = this.selectComponent('.picker1') //獲取組件實(shí)例
picker.setIndexes([this.data.index]) //setIndexes()中的參數(shù)是一個數(shù)組
}
補(bǔ)充知識:項(xiàng)目總結(jié)之關(guān)于vue中使用mint-ui的mt-popup出現(xiàn)滾動穿透問題的解決總結(jié)
說實(shí)話,使用Mint-ui這個ui組件的過程中遇到了很多問題,這個ui組件問題真多。先說今天的主題吧,我在使用popup選擇框的時候和datepicker時間選擇器的時候出現(xiàn)了滾動穿透的問題,特別是在ios上面。
找了好多方法,最后同事給出了一個好的方法,很簡潔,于是就想著總結(jié)下來。
防止?jié)L動穿透 只需加入@touchmove.native.stop.prevent 阻止默認(rèn)根元素的默認(rèn)事件就可以了,native是關(guān)鍵,這個表示根元素的意思,也就是body或者h(yuǎn)tml
代碼如下:
Popup組件:
<mt-popup
v-model="popupVisible"
position="bottom">
...
</mt-popup>
// 防止?jié)L動穿透 只需加入@touchmove.native.stop.prevent 阻止默認(rèn)根元素的默認(rèn)事件就可以了native是關(guān)鍵,這個表示根元素的意思,也就是body或者h(yuǎn)tml
<mt-popup
v-model="popupVisible"
position="bottom"
@touchmove.native.stop.prevent>
...
</mt-popup>
注意當(dāng) mt-popup中還有div等子元素的時候,一定要注意,這個時候可能會有一些問題,會出現(xiàn)mt-popup這個元素也滾動不了的情況,所以說如果mt-popup本身不需要滾動的話,加了@touchmove.native.stop.prevent,底部頁面就不會跟著滑動,如果mt-popup里面有滾動條需要滾動的話,可能就滾動不了,這個時候需要采取常規(guī)方法了,如下:
// 解決方式,通過監(jiān)聽popupVisible變量,在彈窗出現(xiàn)后禁止body節(jié)點(diǎn)touchMove事件,彈窗消失后恢復(fù)body節(jié)點(diǎn)的touchMove事件
//html 如下
<mt-popup
v-model="popupVisible"
position="bottom">
...
</mt-popup>
// js 如下
const handler = function(e) {
e.preventDefault();
}
// vue實(shí)例內(nèi)
watch: {
popupVisible: function (val) {
if(val) {
document.getElementsByTagName('body')[0].addEventListener('touchmove', this.handler, { passive: false });
} else {
document.getElementsByTagName('body')[0].removeEventListener('touchmove', this.handler, { passive: false });
}
}
}
Datetime Picker:
<mt-datetime-picker
ref="picker"
type="time"
v-model="pickerValue"
@touchmove.native.stop.prevent>
</mt-datetime-picker>
對于時間組件加了@touchmove.native.stop.prevent,選擇時間滾動的時候底部頁面就不會跟著滾動了,很完美。
@touchmove.native.stop.prevent可以使我們省好多事,用起來吧!
以上這篇Vant Weapp組件踩坑:picker的初始賦值解決就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Vue實(shí)現(xiàn)HTML轉(zhuǎn)PDF并導(dǎo)出
這篇文章主要為大家介紹了三種方法,可以實(shí)現(xiàn)將HTML頁面轉(zhuǎn)為PDF并實(shí)現(xiàn)下載。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-04-04
vue2與vue3雙向數(shù)據(jù)綁定的區(qū)別說明
這篇文章主要介紹了vue2與vue3雙向數(shù)據(jù)綁定的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
詳解vue-router 2.0 常用基礎(chǔ)知識點(diǎn)之導(dǎo)航鉤子
本篇文章主要介紹了vue-router 2.0 常用基礎(chǔ)知識點(diǎn)之導(dǎo)航鉤子,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
VUE +Element 實(shí)現(xiàn)多個字段值拼接功能
這篇文章主要介紹了VUE +Element 實(shí)現(xiàn)多個字段值拼接,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
詳解Vue webapp項(xiàng)目通過HBulider打包原生APP
這篇文章主要介紹了詳解Vue webapp項(xiàng)目通過HBulider打包原生APP,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
vue+watermark-dom實(shí)現(xiàn)頁面水印效果(示例代碼)
watermark.js 是基于 DOM 對象實(shí)現(xiàn)的 BS 系統(tǒng)的水印,確保系統(tǒng)保密性,安全性,降低數(shù)據(jù)泄密風(fēng)險(xiǎn),簡單輕量,支持多屬性配置,本文將通過 vue 結(jié)合 watermark-dom 庫,教大家實(shí)現(xiàn)簡單而有效的頁面水印效果,感興趣的朋友跟隨小編一起看看吧2024-07-07

