溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

element上傳組件循環(huán)引用及簡(jiǎn)單時(shí)間倒計(jì)時(shí)的實(shí)現(xiàn)

發(fā)布時(shí)間:2020-10-15 14:54:39 來源:腳本之家 閱讀:194 作者:Haorooms 欄目:web開發(fā)

前言

今天記錄幾個(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í)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(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)容。

AI