VantUI時(shí)間選擇器

? 距離我上一次博客都距離五個(gè)多月了,證明我這五個(gè)月沒有好好學(xué)習(xí)声功,自我反省下醒串。

? 這次寫這個(gè)博客执桌,是我工作中遇到的問題,項(xiàng)目是做一個(gè)h5移動(dòng)端的商城芜赌。之前沒用過VantUI仰挣,拿到需要用到時(shí)間選擇器的時(shí)候也是捉摸了一會(huì)。

? 大概需求是缠沈,點(diǎn)擊彈出時(shí)間選擇器膘壶,并顯示時(shí)間到頁面上。

? 一開始看文檔的時(shí)候也沒太仔細(xì)洲愤,沒看到前面的一句話時(shí)間選擇組件通常與彈出層組件配合使用颓芭。如果直接按需導(dǎo)入,時(shí)間選擇器會(huì)直接出現(xiàn)在頁面上柬赐。

引入

? 這里采用的按需導(dǎo)入亡问。

import { Popup } from 'vant';
import { DatetimePicker } from 'vant';

Vue.use(Popup)
Vue.use(DatetimePicker);

主要代碼

  1. 需求主要是實(shí)現(xiàn)年月日的選擇,type="date"肛宋,由于頁面時(shí)間選擇器較多(需求有四個(gè))所以我只寫了一個(gè)彈出層州藕,選擇器全部放彈出層里万矾,通過 v-if 控制顯示與隱藏

  2. 開始時(shí)間不能高于當(dāng)前日期,:max-date="currentTime"

  3. 結(jié)束時(shí)間不能低于開始日期慎框,:min-date="startTime"

  4. cancel良狈、confirm 為 vantUI 時(shí)間選擇器提供的事件,點(diǎn)擊取消或確認(rèn)按鈕觸發(fā)事件笨枯,其中 confirm 有個(gè)回調(diào)參數(shù) value 為當(dāng)前選擇的時(shí)間

  5. 將彈出層組件套在時(shí)間選擇器的組件外面薪丁,進(jìn)行組合使用,需要手動(dòng)在取消馅精、確認(rèn)按鈕上加事件隱藏彈出層

  6. formatter 調(diào)用的官方文檔的formatter方法严嗜,會(huì)將選項(xiàng)文字進(jìn)行格式化處理,如下圖所示洲敢,左邊是調(diào)用后的效果

    ![1561472599881.png](https://upload-images.jianshu.io/upload_images/16048198-4664af678baf8eec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

? 我這里只放了一部分代碼

<template>
    <div>
        <!-- 按鈕區(qū)域 -->
        <div>
            <span ref="termStart" @click="showDatePicker('termStart')">開始時(shí)間</span>
            <span ref="termEnd" @click="showDatePicker('termEnd')">結(jié)束時(shí)間</span>
        </div>
        <!-- 彈出層 -->
        <van-popup v-model="isPopShow" position="bottom">
            <!-- 開始時(shí)間 -->
            <van-datetime-picker
                @cancel="cancelPicker"
                @confirm="confirmPicker"
                v-if="datePicker == 'startTime'"
                v-model="startTime"
                type="date"
                :formatter="formatter"
                :max-date="currentTime"
             />
            <!-- 結(jié)束時(shí)間 -->
            <van-datetime-picker
                @cancel="cancelPicker"
                @confirm="confirmPicker"
                v-if="datePicker == 'endTime'"
                v-model="endTime"
                type="date"
                :formatter="formatter"
                :min-date="startTime"
             />
        </van-popup>
    </div>
</template>
<script>
export default {
    data() {
        return {
            currentTime: new Date(), // 開始時(shí)間不能超過當(dāng)前時(shí)間
            startTime: new Date(), // 開始時(shí)間
            endTime: new Date(), // 結(jié)束時(shí)間
            datePicker: '', // 用于判斷哪個(gè)選擇器的顯示與隱藏
            isPopShow: false, // 彈出層隱藏與顯示
        }
    },
    methods: {
        showDatePicker(picker) { //彈出層并顯示時(shí)間選擇器
            this.isPopShow = true;
            this.datePicker = picker;
        },
        cancelPicker() { // 選擇器取消按鈕點(diǎn)擊事件
            this.isPopShow = false;
            this.datePicker = "";
        },
        confirmPicker(value) {// 確定按鈕漫玄,時(shí)間格式化并顯示在頁面上
            var date = value;
            var m = date.getMonth() + 1;
            var d = date.getDate();
            if (m >= 1 && m <= 9) {
                m = "0" + m;
            }
            if (d >= 0 && d <= 9) {
                d = "0" + d;
            }
            var timer = date.getFullYear() + "-" + m + "-" + d
            this.$refs[this.datePicker].innerHTML = timer;
            this.isPopShow = false;
            this.datePicker = "";
        },
        formatter(type, value) {// 格式化選擇器日期
            if (type === "year") {
                return `${value}年`;
            } else if (type === "month") {
                return `${value}月`;
            }
            return value;
        },
    }
    
}
</script>

展示效果

按鈕

1561472584970.png

時(shí)間選擇器

1561472599881.png

顯示時(shí)間

1561472614115.png

總結(jié)

? 表示自己還是個(gè)小菜鳥,歡迎各路大神指點(diǎn)和探討压彭。


timg.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睦优,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子壮不,更是在濱河造成了極大的恐慌汗盘,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件询一,死亡現(xiàn)場離奇詭異隐孽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)健蕊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門菱阵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缩功,你說我怎么就攤上這事晴及。” “怎么了掂之?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵抗俄,是天一觀的道長。 經(jīng)常有香客問我世舰,道長动雹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任跟压,我火速辦了婚禮胰蝠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己茸塞,他們只是感情好躲庄,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钾虐,像睡著了一般噪窘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上效扫,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天倔监,我揣著相機(jī)與錄音,去河邊找鬼菌仁。 笑死浩习,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的济丘。 我是一名探鬼主播谱秽,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摹迷!你這毒婦竟也來了疟赊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤泪掀,失蹤者是張志新(化名)和其女友劉穎听绳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體异赫,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年头岔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塔拳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峡竣,死狀恐怖靠抑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情适掰,我是刑警寧澤颂碧,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站类浪,受9級特大地震影響载城,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜费就,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一诉瓦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦睬澡、人聲如沸固额。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斗躏。三九已至,卻和暖如春昔脯,著一層夾襖步出監(jiān)牢的瞬間瑟捣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工栅干, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迈套,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓碱鳞,卻偏偏與公主長得像桑李,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子窿给,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容