element上傳組件循環(huán)引用及簡(jiǎn)單時(shí)間倒計(jì)時(shí)的實(shí)現(xiàn)
前言
今天記錄幾個(gè)簡(jiǎn)單的小問(wèn)題,前端時(shí)間開(kāi)發(fā)用到的,之前看到博客中沒(méi)有記錄,簡(jiǎn)單記錄一下。 一個(gè)是element上傳組件循環(huán)引用的方式,一個(gè)是簡(jiǎn)單的倒計(jì)時(shí)。
上傳組件每個(gè)上傳都要指定相應(yīng)的函數(shù),而且函數(shù)不能傳入?yún)?shù),10個(gè)上傳按鈕要寫10個(gè)上傳函數(shù),非常麻煩。針對(duì)這個(gè),我們可以循環(huán)這些函數(shù)。
案例
element一個(gè)上傳組件如下:
<el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"> <img v-if="imageUrl" :src="imageUrl" class="avatar"> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload>
假如有10個(gè)上傳,豈不是要指定10個(gè)handleAvatarSuccess這個(gè)回掉函數(shù)?這些太麻煩了!??!
no! 我們可以不用這么寫。推薦的一個(gè)寫法如下:
<div class="pzsrltv" v-for="(item,index) in sValueAddedServiceData" :key="index"> <!--這一塊循環(huán)出來(lái) --> <div class="s_step1"> <div class="stitle">{{item.name}}<span class="sblue" v-if="item.showimg" @click.stop="showImg.show = true;showImg.url = item.showimg">點(diǎn)擊查看示例</span> </div> <div class="one_line"> <img class="imagelist" v-if="svalueImg[item.value]" :src="`${viewUrl}${svalueImg[item.value]}`" > <el-upload v-if="!svalueImg[item.value]" class="avatar-uploader mt10" accept="image/jpeg,image/png,image/gif" :action="baseUpload" :show-file-list="false" :on-success="handlescSuccess[item.value]" :before-upload="beforeAvatarUpload"> <i class="el-icon-plus avatar-uploader-icon"></i> </el-upload> </div> </div> </div>
如上面代碼,我們直接循環(huán)上傳。
我們?cè)赿ata()里面指定handlescSuccess: {},
data(){ return { handlescSuccess: {}, svalueImg: {}, } }
初始化的時(shí)候,對(duì)上傳進(jìn)行設(shè)置
for (let i = 1; i <= 10; i++) { //循環(huán)的個(gè)數(shù) this.handlescSuccess[i] = function(res, file) { // console.log(res, _this.svalueImg) if (_this.svalueImg) { _this.$set(_this.svalueImg, i, res.file.sFile) } } }
上面的代碼是針對(duì)一個(gè)上傳按鈕只能上傳一張圖片的情況。上傳多種做法類似。
例如如下:
//以下代碼寫在回調(diào)里面 for (let i = 0; i < item.iNum; i++) { // 圖文視頻上傳函數(shù) _this.handleTWSuccess[`${i}`] = function(res, file) { _this.sEvaluate['2'][i].sImg.push(res.file.sFile) } }
時(shí)間倒計(jì)時(shí)
這個(gè)實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,但是在vue Dom 中實(shí)時(shí)展示,要用$set方式
天,小時(shí),分鐘,秒的倒計(jì)時(shí)函數(shù):
data里面:
data(){ return { letTimes: { nowTime: '' }, } }
methods里面:
countDown(times) { const _this = this let timer = null timer = setInterval(function() { let day = 0, hour = 0, minute = 0, second = 0// 時(shí)間默認(rèn)值 if (times > 0) { day = Math.floor(times / (60 * 60 * 24)) hour = Math.floor(times / (60 * 60)) - (day * 24) minute = Math.floor(times / 60) - (day * 24 * 60) - (hour * 60) second = Math.floor(times) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60) } if (day <= 9) day = '0' + day if (hour <= 9) hour = '0' + hour if (minute <= 9) minute = '0' + minute if (second <= 9) second = '0' + second _this.$set(_this.letTimes, 'nowTime', `${day !== '00' ? `${day}天:` : ''}${hour}小時(shí):${minute}分鐘:${second}秒`) times-- }, 1000) if (times <= 0) { _this.$set(_this.letTimes, 'nowTime', '') clearInterval(timer) } },
單純分鐘和秒倒計(jì)時(shí)
function resetTime(time){ var timer=null; var t=time; var m=0; var s=0; m=Math.floor(t/60%60); m<10&&(m='0'+m); s=Math.floor(t%60); function countDown(){ s--; s<10&&(s='0'+s); if(s.length>=3){ s=59; m="0"+(Number(m)-1); } if(m.length>=3){ m='00'; s='00'; clearInterval(timer); } console.log(m+"分鐘"+s+"秒"); } timer=setInterval(countDown,1000); }
用法很簡(jiǎn)單,傳秒數(shù)進(jìn)來(lái)就可以了
例如:
this.countDown(5689) this.resetTime(256)
小結(jié)
簡(jiǎn)單的小案例就分享到這里,國(guó)慶愉快,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue3如何通過(guò)provide和inject實(shí)現(xiàn)多層級(jí)組件通信
這篇文章主要介紹了vue3如何通過(guò)provide和inject實(shí)現(xiàn)多層級(jí)組件通信,本文通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11vue 項(xiàng)目 iOS WKWebView 加載
這篇文章主要介紹了vue 項(xiàng)目 iOS WKWebView 加載問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化的相關(guān)資料,I18n是Vue.js的國(guó)際化插件,項(xiàng)目里面的中英文等多語(yǔ)言切換會(huì)使用到這個(gè)東西,需要的朋友可以參考下2023-12-12vuex直接修改state、commit和dispatch修改state的用法及區(qū)別說(shuō)明
這篇文章主要介紹了vuex直接修改state、commit和dispatch修改state的用法及區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08vue權(quán)限路由實(shí)現(xiàn)的方法示例總結(jié)
這篇文章主要給大家介紹了關(guān)于vue權(quán)限路由實(shí)現(xiàn)方法的相關(guān)資料,文中通過(guò)示例代碼介紹地方非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07vue實(shí)現(xiàn)一個(gè)獲取按鍵展示快捷鍵效果的Input組件
這篇文章主要介紹了vue如何實(shí)現(xiàn)一個(gè)獲取按鍵展示快捷鍵效果的Input組件,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下2021-01-01