vue使用laydate時(shí)間插件的方法
之前在做vue項(xiàng)目時(shí)使用iviewUI庫(kù)中的DatePicker組件,發(fā)現(xiàn)DatePicker使用起來(lái)比較麻煩,尤其是對(duì)時(shí)間精確度上的限制不盡人意,操作起來(lái)也比較繁瑣,總之在處理一系列時(shí)間組件相互聯(lián)動(dòng)上存在一大堆問(wèn)題,比如

DatePicker時(shí)間組件
時(shí)間精確到分,組件1的value等于組件2的最小值,組件2的vlaue等于組件3的最小值,。。。依次類推,如果是時(shí)間精確到日,這個(gè)組件沒(méi)有任何問(wèn)題,如果是精確到時(shí)分秒,這個(gè)組件的對(duì)時(shí)分秒的控制就不是那個(gè)靈敏了,在點(diǎn)擊時(shí)分秒之后才能識(shí)別出對(duì)時(shí)分秒的限制,而這種用戶體驗(yàn)不夠友好。
所以,想到了以前用過(guò)的laydate時(shí)間插件
在vue中使用laydate
在vue組件中npm install laydate,然后在vue組件中直接引入:
import laydate from 'laydate'
然后在mounted中調(diào)用:
laydate.now();
發(fā)現(xiàn)chrome瀏覽器控制臺(tái)中報(bào)錯(cuò),laydate is not defined,然后把laydate.js放在靜態(tài)資源里面引入:
import laydate from '../../static/js/laydate.js'
發(fā)現(xiàn)chrome瀏覽器控制臺(tái)中依然是報(bào)錯(cuò),laydate is not defined,然后在html入口文件中引入:
<script src="./src/static/js/laydate.js"></script>
發(fā)現(xiàn)chrome瀏覽器控制臺(tái)中不報(bào),laydate is not defined,但是又報(bào)另外一個(gè)錯(cuò)誤:require is not defined,查看原碼發(fā)現(xiàn)是因?yàn)閘aydate.js中在引用css樣式表時(shí)未定義:require('./need/laydate.css');require('./skins/default/laydate.css');
最后使用laydate打包構(gòu)建后的文件:dist/laydate/laydate.min.js,把laydate.min.js和css粘貼到src/static/路徑下,注意js和css結(jié)構(gòu)不要改變
<script src="./src/static/laydate/laydate.min.js"></script>
然后在chrome瀏覽器中成功打印出了laydate.now()的值:2018-10-21
然后使用import方式引入laydate.min.js:
import laydate from '../../static/laydate/laydate.min.js'
chrome控制臺(tái)里有報(bào)錯(cuò):laydate.now is not a function
原因時(shí)laydate.min.js是直接把laydate對(duì)象注冊(cè)到了window上,本身并沒(méi)有export default laydate出口,所以不能使用這種方式引用,應(yīng)該使用:
import '../../static/laydate.min.js'
這樣引用后,chrome中成功打印laydate.now(); 2018-10-21
或者在入口文件index.html中使用cdn加速方式引入laydate.min.js也是可以的:
<script src="https://cdn.jsdelivr.net/npm/laydate@1.0.7/dist/laydate.min.js"></script>
當(dāng)然,如果項(xiàng)目中只是個(gè)別地方是使用到時(shí)間插件,建議采用import方式引入
laydate.min.js時(shí)間插件在vue組件中的使用方式
<template>
<div id="laydateIndex">
<div class="input-item">
<label for="">請(qǐng)選擇時(shí)間:</label>
<input type='text'
name='houseChangeTime'
placeholder='請(qǐng)選擇日期'
class='form-control'
onclick="laydate({ istime: true, format: 'YYYY/MM/DD hh:mm:ss' })" />
</div>
<div class="input-item">
<label for="">開(kāi)始時(shí)間:</label>
<input type="text" name="" id="begintime" placeholder='請(qǐng)選擇日期'>
</div>
<div class="input-item">
<label for="">結(jié)束時(shí)間:</label>
<input type="text" name="" id="endtime" placeholder='請(qǐng)選擇日期'>
</div>
</div>
</template>
<script>
import '../../assets/js/laydate.min.js'
export default {
name: 'laydateIndex',
data () {
return {
begintime: '',
endtime: '',
start_time: '',
}
},
methods: {
setBeginTime () {
var _this = this;
var mintime = laydate.now(0, 'YYYY-MM-DD hh:mm:ss');
_this.$data.begintime = mintime;
_this.$data.endtime = mintime;
var begintiem_options = {
elem: '#begintime',
format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定義
event: 'click', //觸發(fā)事件
istime: true, //是否開(kāi)啟時(shí)間選擇
isclear: true, //是否顯示清空
issure: true, //是否顯示確認(rèn)
festival: true, //是否顯示節(jié)日
min: mintime, //最小日期
max: '2099-12-31 23:59:59', //最大日期
start: mintime, //開(kāi)始日期
fixed: true, //是否固定在可視區(qū)域
zIndex: 99999999, //css z-index
choose: function(dates) { // 選擇日期完畢的回調(diào)
endtime_options.start = dates;
endtime_options.min = dates;
_this.$data.begintime = dates;
_this.$data.endtime = dates;
}
};
var endtime_options = {
elem: '#endtime',
format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定義
event: 'click', //觸發(fā)事件
istime: true, //是否開(kāi)啟時(shí)間選擇
isclear: true, //是否顯示清空
issure: true, //是否顯示確認(rèn)
festival: true, //是否顯示節(jié)日
min: _this.$data.begintime, //最小日期
max: '2099-12-31 23:59:59', //最大日期
start: _this.$data.begintime, //開(kāi)始日期
fixed: true, //是否固定在可視區(qū)域
zIndex: 99999999, //css z-index
choose: function(dates) { // 選擇日期完畢的回調(diào)
// this.begintiem_options = dates;
}
};
laydate(begintiem_options);
laydate(endtime_options);
},
initPage () {
var _this = this;
_this.setBeginTime();
},
},
mounted () {
this.initPage();
},
}
</script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Element-Plus表格實(shí)現(xiàn)Table自定義合并行數(shù)據(jù)
在開(kāi)發(fā)項(xiàng)目中,我們時(shí)常會(huì)用到表格,許多需求可能會(huì)要求自定義特定的行或列,下面就跟隨小編一起來(lái)學(xué)習(xí)一下在實(shí)際開(kāi)發(fā)中如何實(shí)現(xiàn)這一要求吧2024-12-12
關(guān)于實(shí)現(xiàn)Vue3版抖音滑動(dòng)插件踩坑指南
這篇文章主要給大家介紹了關(guān)于實(shí)現(xiàn)Vue3版抖音滑動(dòng)插件踩坑指南,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02
vue項(xiàng)目百度地圖如何自定義標(biāo)注marker
這篇文章主要介紹了vue項(xiàng)目百度地圖如何自定義標(biāo)注marker問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue.js3.2的vnode部分優(yōu)化升級(jí)使用示例詳解
這篇文章主要為大家介紹了Vue.js3.2的vnode部分優(yōu)化升級(jí)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
vue實(shí)現(xiàn)廣告欄上下滾動(dòng)效果
這篇文章主要介紹了vue實(shí)現(xiàn)廣告欄上下滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Vuejs第七篇之Vuejs過(guò)渡動(dòng)畫(huà)案例全面解析
這篇文章主要介紹了Vuejs第七篇之Vuejs過(guò)渡動(dòng)畫(huà)案例全面解析的相關(guān)資料,需要的朋友可以參考下2016-09-09
vue引用CSS樣式實(shí)現(xiàn)手機(jī)充電效果
這篇文章主要介紹了vue引用CSS樣式實(shí)現(xiàn)手機(jī)充電效果,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01

