W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
時(shí)間選擇器,支持日期、年月、時(shí)分等維度,通常與 彈出層 組件配合使用
import Vue from 'vue';
import { DatetimePicker } from 'vant';
Vue.use(DatetimePicker);
<van-datetime-picker
v-model="currentDate"
type="datetime"
:min-date="minDate"
:max-date="maxDate"
/>
export default {
data() {
return {
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date()
};
}
};
<van-datetime-picker
v-model="currentDate"
type="date"
:min-date="minDate"
:max-date="maxDate"
/>
export default {
data() {
return {
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date()
};
}
};
通過(guò)傳入formatter函數(shù),可以對(duì)選項(xiàng)文字進(jìn)行格式化處理
<van-datetime-picker
v-model="currentDate"
type="year-month"
:min-date="minDate"
:max-date="maxDate"
:formatter="formatter"
/>
export default {
data() {
return {
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date()
};
},
methods: {
formatter(type, val) {
if (type === 'year') {
return `${val}年`;
} else if (type === 'month') {
return `${val}月`
}
return val;
}
}
}
<van-datetime-picker
v-model="currentTime"
type="time"
:min-hour="10"
:max-hour="20"
/>
export default {
data() {
return {
currentTime: '12:00'
};
}
};
通過(guò)傳入filter函數(shù),可以對(duì)選項(xiàng)數(shù)組進(jìn)行過(guò)濾,實(shí)現(xiàn)自定義時(shí)間間隔
<van-datetime-picker
v-model="currentTime"
type="time"
:filter="filter"
/>
export default {
data() {
return {
currentTime: '12:00'
};
},
methods: {
filter(type, options) {
if (type === 'minute') {
return options.filter(option => option % 5 === 0);
}
return options;
}
}
};
參數(shù) | 說(shuō)明 | 類型 | 默認(rèn)值 |
---|---|---|---|
type | 類型,可選值為 date time year-month | string | datetime |
title | 頂部欄標(biāo)題 | string | '' |
confirm-button-text | 確認(rèn)按鈕文字 | string | 確認(rèn) |
cancel-button-text | 取消按鈕文字 | string | 取消 |
show-toolbar | 是否顯示頂部欄 | boolean | true |
loading | 是否顯示加載狀態(tài) | boolean | false |
filter | 選項(xiàng)過(guò)濾函數(shù) | (type, vals) => vals | - |
formatter | 選項(xiàng)格式化函數(shù) | (type, val) => val | - |
item-height | 選項(xiàng)高度 | number | string | 44 |
visible-item-count | 可見(jiàn)的選項(xiàng)個(gè)數(shù) | number | string | 5 |
swipe-duration v2.2.13 | 快速滑動(dòng)時(shí)慣性滾動(dòng)的時(shí)長(zhǎng),單位ms | number | string | 1000 |
當(dāng)時(shí)間選擇器類型為 date 或 datetime 時(shí),支持以下 props
參數(shù) | 說(shuō)明 | 類型 | 默認(rèn)值 |
---|---|---|---|
min-date | 可選的最小時(shí)間,精確到分鐘 | Date | 十年前 |
max-date | 可選的最大時(shí)間,精確到分鐘 | Date | 十年后 |
當(dāng)時(shí)間選擇器類型為 time 時(shí),支持以下 props
參數(shù) | 說(shuō)明 | 類型 | 默認(rèn)值 |
---|---|---|---|
min-hour | 可選的最小小時(shí) | number | string | 0 |
max-hour | 可選的最大小時(shí) | number | string | 23 |
min-minute | 可選的最小分鐘 | number | string | 0 |
max-minute | 可選的最大分鐘 | number | string | 59 |
事件名 | 說(shuō)明 | 回調(diào)參數(shù) |
---|---|---|
change | 當(dāng)值變化時(shí)觸發(fā)的事件 | picker: Picker 實(shí)例 |
confirm | 點(diǎn)擊完成按鈕時(shí)觸發(fā)的事件 | value: 當(dāng)前選中的時(shí)間 |
cancel | 點(diǎn)擊取消按鈕時(shí)觸發(fā)的事件 | - |
通過(guò) ref 可以獲取到 DatetimePicker 實(shí)例并調(diào)用實(shí)例方法,詳見(jiàn) 組件實(shí)例方法
方法名 | 說(shuō)明 | 參數(shù) | 返回值 |
---|---|---|---|
getPicker v2.4.0 | 獲取 Picker 實(shí)例,用于調(diào)用 Picker 的實(shí)例方法 | - | - |
請(qǐng)注意不要在模板中直接使用類似min-date="new Date()"的寫法,這樣會(huì)導(dǎo)致每次渲染組件時(shí)傳入一個(gè)新的 Date 對(duì)象,而傳入新的數(shù)據(jù)會(huì)觸發(fā)下一次渲染,從而陷入死循環(huán)。
正確的做法是將min-date作為一個(gè)數(shù)據(jù)定義在data函數(shù)中。
如果你遇到了在 iOS 上無(wú)法渲染組件的問(wèn)題,請(qǐng)確認(rèn)在創(chuàng)建 Date 對(duì)象時(shí)沒(méi)有使用new Date('2020-01-01')這樣的寫法,iOS 不支持以中劃線分隔的日期格式,正確寫法是new Date('2020/01/01')。
對(duì)此問(wèn)題的詳細(xì)解釋:stackoverflow。
參見(jiàn)在桌面端使用。
如果僅需要選擇年份或者月份,建議直接使用 Picker 組件。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: