前言
今天记录几个简单的小问题,前端时间开发用到的,之前看到博客中没有记录,简单记录一下。 一个是element上传组件循环引用的方式,一个是简单的倒计时。
上传组件每个上传都要指定相应的函数,而且函数不能传入参数,10个上传按钮要写10个上传函数,非常麻烦。针对这个,我们可以循环这些函数。
案例
element一个上传组件如下:
<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="/UploadFiles/2021-04-02/imageUrl">假如有10个上传,岂不是要指定10个handleAvatarSuccess这个回掉函数?这些太麻烦了!!!
no! 我们可以不用这么写。推荐的一个写法如下:
<div class="pzsrltv" v-for="(item,index) in sValueAddedServiceData" :key="index"> <!--这一块循环出来 --> <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">点击查看示例</span> </div> <div class="one_line"> <img class="imagelist" v-if="svalueImg[item.value]" :src="/UploadFiles/2021-04-02/`${viewUrl}${svalueImg[item.value]}`">如上面代码,我们直接循环上传。
我们在data()里面指定handlescSuccess: {},
data(){ return { handlescSuccess: {}, svalueImg: {}, } }初始化的时候,对上传进行设置
for (let i = 1; i <= 10; i++) { //循环的个数 this.handlescSuccess[i] = function(res, file) { // console.log(res, _this.svalueImg) if (_this.svalueImg) { _this.$set(_this.svalueImg, i, res.file.sFile) } } }上面的代码是针对一个上传按钮只能上传一张图片的情况。上传多种做法类似。
例如如下:
//以下代码写在回调里面 for (let i = 0; i < item.iNum; i++) { // 图文视频上传函数 _this.handleTWSuccess[`${i}`] = function(res, file) { _this.sEvaluate['2'][i].sImg.push(res.file.sFile) } }时间倒计时
这个实现起来很简单,但是在vue Dom 中实时展示,要用$set方式
天,小时,分钟,秒的倒计时函数:
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// 时间默认值 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' "htmlcode">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); }用法很简单,传秒数进来就可以了
例如:
this.countDown(5689) this.resetTime(256)小结
简单的小案例就分享到这里,国庆愉快,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
狼山资源网 Copyright www.pvsay.com
暂无“element上传组件循环引用及简单时间倒计时的实现”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。