您好,登錄后才能下訂單哦!
前言
今天記錄幾個(gè)簡(jiǎn)單的小問題,前端時(shí)間開發(fā)用到的,之前看到博客中沒有記錄,簡(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ù)?這些太麻煩了?。。?/p>
no! 我們可以不用這么寫。推薦的一個(gè)寫法如下:
<div class="pzsrltv" v-for="(item,index) in sValueAddedServiceData" :key="index"> <!--這一塊循環(huán)出來 --> <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)起來很簡(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)來就可以了
例如:
this.countDown(5689) this.resetTime(256)
小結(jié)
簡(jiǎn)單的小案例就分享到這里,國(guó)慶愉快,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。