Vant4 TimePicker 時間選擇

2023-02-16 17:55 更新

介紹

時間選擇器,通常與彈出層組件配合使用。

引入

通過以下方式來全局注冊組件,更多注冊方式請參考組件注冊。

import { createApp } from 'vue';
import { TimePicker } from 'vant';

const app = createApp();
app.use(TimePicker);

代碼演示

基礎(chǔ)用法

通過 ?v-model? 綁定當(dāng)前選中的時間。

<van-time-picker v-model="currentTime" title="選擇時間" />
import { ref } from 'vue';

export default {
  setup() {
    const currentTime = ref(['12', '00']);
    return { currentTime };
  },
};

選項類型

通過 ?columns-type? 屬性可以控制選項的類型,支持以任意順序?qū)?nbsp;?hour?、?minute? 和 ?second? 進(jìn)行排列組合。

比如:

  • 傳入 ?['hour']? 來單獨(dú)選擇小時。
  • 傳入 ?['minute']? 來單獨(dú)選擇分鐘。
  • 傳入 ?['minute', 'second']? 來選擇分鐘和秒。
  • 傳入 ?['hour', 'minute', 'second']? 來選擇小時、分鐘和秒。
<van-time-picker
  v-model="currentTime"
  title="選擇時間"
  :columns-type="columnsType"
/>
import { ref } from 'vue';

export default {
  setup() {
    const currentTime = ref(['12', '00', '00']);
    const columnsType = ['hour', 'minute', 'second'];
    return {
      currentTime,
      columnsType,
    };
  },
};

時間范圍

<van-time-picker
  v-model="currentTime"
  title="選擇時間"
  :min-hour="10"
  :max-hour="20"
  :min-minute="30"
  :max-minute="40"
/>
import { ref } from 'vue';

export default {
  setup() {
    const currentTime = ref(['12', '35']);
    return { currentTime };
  },
};

格式化選項

通過傳入 ?formatter? 函數(shù),可以對選項的文字進(jìn)行格式化。

<van-time-picker
  v-model="currentTime"
  title="選擇時間"
  :formatter="formatter"
/>
import { ref } from 'vue';

export default {
  setup() {
    const currentTime = ref(['12', '00']);
    const formatter = (type, option) => {
      if (type === 'hour') {
        option.text += '時';
      }
      if (type === 'minute') {
        option.text += '分';
      }
      return option;
    };

    return {
      filter,
      currentTime,
    };
  },
};

過濾選項

通過傳入 ?filter? 函數(shù),可以對選項數(shù)組進(jìn)行過濾,剔除不需要的時間,實現(xiàn)自定義時間間隔。

<van-time-picker v-model="currentTime" title="選擇時間" :filter="filter" />
import { ref } from 'vue';

export default {
  setup() {
    const currentTime = ref(['12', '00']);
    const filter = (type, options) => {
      if (type === 'minute') {
        return options.filter((option) => Number(option) % 10 === 0);
      }
      return options;
    };

    return {
      filter,
      currentTime,
    };
  },
};

API

Props

參數(shù) 說明 類型 默認(rèn)值
v-model 當(dāng)前選中的時間 string[] -
columns-type 選項類型,由 hour、minute 和 second 組成的數(shù)組 string[] ['hour', 'minute']
min-hour 可選的最小小時 number | string 0
max-hour 可選的最大小時 number | string 23
min-minute 可選的最小分鐘 number | string 0
max-minute 可選的最大分鐘 number | string 59
min-second 可選的最小秒數(shù) number | string 0
max-second 可選的最大秒數(shù) number | string 59
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
readonly 是否為只讀狀態(tài),只讀狀態(tài)下無法切換選項 boolean false
filter 選項過濾函數(shù) (type: string, options: PickerOption[]) => PickerOption[] -
formatter 選項格式化函數(shù) (type: string, option: PickerOption) => PickerOption -
option-height 選項高度,支持 px vw vh rem 單位,默認(rèn) px number | string 44
visible-option-num 可見的選項個數(shù) number | string 6
swipe-duration 快速滑動時慣性滾動的時長,單位 ms number | string 1000

Events

事件名 說明 回調(diào)參數(shù)
confirm 點擊完成按鈕時觸發(fā) { selectedValues, selectedOptions }
cancel 點擊取消按鈕時觸發(fā) { selectedValues, selectedOptions }
change 選項改變時觸發(fā) { selectedValues, selectedOptions, columnIndex }

Slots

名稱 說明 參數(shù)
toolbar 自定義整個頂部欄的內(nèi)容 -
title 自定義標(biāo)題內(nèi)容 -
confirm 自定義確認(rèn)按鈕內(nèi)容 -
cancel 自定義取消按鈕內(nèi)容 -
option 自定義選項內(nèi)容 option: PickerOption
columns-top 自定義選項上方內(nèi)容 -
columns-bottom 自定義選項下方內(nèi)容 -

類型定義

組件導(dǎo)出以下類型定義:

import type { TimePickerProps, TimePickerColumnType } from 'vant';

常見問題

在桌面端無法操作組件?

參見桌面端適配


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號