Vue2中Element?DatePicker組件設(shè)置默認日期及控制日期范圍
前言
以前都是做練習, 上周拿到這個任務直接被卡住…
一、設(shè)置默認日期
1.不要用placeholder
依然不使用placeholder
屬性, 在v-model
初始就綁定了時間的情況下, 組件可以識別并自動切換到對應日期, 使用placeholder
其實是無效的.
placeholder
展示的值并不是綁定在data中的屬性上的, 即便設(shè)置, 初始狀況下也無法獲取值.
<el-date-picker v-model="date" format="yyyy-MM-dd" > <!-- :placeholder="date" --> </el-date-picker>
data() { return { date: '2017-01-01' }; },
這樣也是照常顯示日期, 另外提醒就是format
不要全大寫, 會沒法切換日期.
另外:
format
: datePicker以何種格式展示時間value-foramt
: detePicker的值為何種格式(從data中直接取到的值為何種格式)
<template> <div> <el-date-picker v-model="date" format="yyyy-MM-dd" value-format="yyyyMMdd"> </el-date-picker> {{ date }} </div> </template>
data() { return { date: "20020807", }; },
合理使用免除一些不必要的數(shù)據(jù)處理.
2.設(shè)置動態(tài)的默認日期
還是利用v-model
, 可以利用時間對象new Date()
的輔助.
<el-date-picker v-model="date.createDate" format="yyyy-MM-dd" ></el-date-picker>
data() { return { date: { createDate: new Date(), }, }; },
不過你可能并不想每次拿數(shù)據(jù)都到date.createDate
里去拿, 所以數(shù)組也是可以的
data() { return { date: [ new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date().getDate() ] }; },
如果數(shù)組取值形式也不能滿意, 那就把表達式抽離出來, 然后你可以在mounted
或者created
周期把它賦值給data
里綁定的那個屬性, 就像這樣:
data() { return { date: "", }; }, created() { this.initDate(); }, methods: { getDate() { return ( new Date().getFullYear() + "-" + (new Date().getMonth() + 1) + "-" + new Date().getDate() ); }, initDate() { this.date = this.getDate() }, }, };
二、限制日期選取
dateRange
模式下也是一樣的.
1.方案
不是用disabled
屬性來做這個, 剛開始用的時候迷糊了…
使用pickerOptions
屬性來達到這個目的, pickerOptions
綁定的函數(shù)對象里有diabledDate
函數(shù)類型, 這個函數(shù)可以接受一個參數(shù)在運算中作為當前日期(這個參數(shù)一般會寫作time
), 而函數(shù)內(nèi)的表達式返回true
時, datePicker
會根據(jù)表達式來對日期進行限制選擇(就是有些日期會變成灰色不可選).
屬性 | 說明 |
---|---|
shortcuts | 設(shè)置快捷選項(就是日期選擇表左邊的快捷選項),需要傳入 { text, onClick } 對象 |
disabledDate | 設(shè)置禁用狀態(tài),參數(shù)為當前日期,要求返回 Boolean |
firstDayOfWeek | 周起始日 |
onPick | 選中日期后會執(zhí)行的回調(diào),只有當 daterange 或 datetimerange 才生效 |
但是這個屬性本身只需要一個對象, 不管你做什么, 你最后給它一個對象就好了, 你可以先在data里準備好這個對象, 然后在里面搞一個disabledDate
屬性, 但是的disabledDate
屬性的值一定得是個函數(shù), 還得能返回Boolean
.
2.舉例
比如這樣:
<el-date-picker v-model="date" format="yyyy-MM-dd" :picker-options="limitDate" ></el-date-picker>
data() { return { date: "", limitDate: { // 一個與picker-options綁定的對象, 和它內(nèi)部的函數(shù)類型disabledDate屬性 disabledDate: this.doLimitDate }, }; }, methods: { doLimitDate() { // 一個能返回Boolean的函數(shù) this.limitDate.disabledDate = (time) => { // time為當前日期, disabledDate自帶參數(shù) return (time.getTime() + 24 * 3600 * 1000) > Date.now() }; }, },
或者這樣:
嗯…我覺得可以嘗試直接返回一個內(nèi)含可返回布爾值的函數(shù)的對象?
<el-date-picker v-model="date" format="yyyy-MM-dd" :picker-options="limitDate" ></el-date-picker>
data() { return { date: "", }; }, computed: { limitDate() { return { disabledDate:(time) => { // time為當前日期, disabledDate自帶參數(shù) return (time.getTime() + 24 * 3600 * 1000) > Date.now(); }; } }
效果都是一樣的, 在我的黑暗模式下不太明顯, 調(diào)回來會清晰一些:
你可以看到未達到的日期都是灰色, 不可選的.
總結(jié)
還好吧, 我前幾天一直很焦慮, 分給我的任務做的很慢, 很多組件的用法都是第一次嘗試, 然后項目也不熟悉, 公共組件和方法用起來也是磕磕絆絆然后接口又出了問題, 啊——! 總之結(jié)果就是我做的很慢…
到此這篇關(guān)于Vue2中Element DatePicker組件設(shè)置默認日期及控制日期范圍的文章就介紹到這了,更多相關(guān)Vue2 Element DatePicker組件設(shè)置日期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解vue中點擊空白處隱藏div的實現(xiàn)(用指令實現(xiàn))
本篇文章主要介紹了詳解vue中點擊空白處隱藏div的實現(xiàn)(用指令實現(xiàn)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04vue實現(xiàn)div可拖動位置也可改變盒子大小的原理
這篇文章主要介紹了vue實現(xiàn)div可拖動位置也可改變盒子大小,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09