mpvue循环列表给每项加定时器
项目需求:给所有订单设置退款倒计时限制
实现:
html结构
<div v-for="(link,key) in orderList" :key="key">
<div>
<p style="color: #C8000A">退款倒计时:
<span id="countTime">{{link.countdownTime}}</span>
</p>
</div>
</div>
//获取订单列表函数
getDataList(){
this.$get('/restapi/delivery/xxxx',{
id: xxxx
})
.then(function (res) {
this.orderList=res.data.data//订单列表
this.eosFormatTime2()//添加倒计时字段
})
}
//24小时倒计时函数
eosFormatTime2() {
var _this=this;
setInterval(()=>{
_this.orderListArr=[];//定义一个新数组
for (var key in _this.orderList) {
var oldTimes=_this.orderList[key].created_at;
var oldTimes1=new Date(oldTimes).getTime();
var endTime=oldTimes1+24*3600*1000;
let time = new Date(endTime);
var now=new Date;
var date = time.getTime() - now.getTime();
if(date<=0){
_this.orderList[key].countdownTime='00:00:00'
}else{
var hours = Math.floor(date /1000/60/60%24);
var minutes=Math.floor(date /1000/60%60);
var seconds=Math.floor(date /1000%60);
hours=hours<10?'0'+hours:hours;
minutes=minutes<10?'0'+minutes:minutes;
seconds=seconds<10?'0'+seconds:seconds;
_thisorderList[key].countdownTime=hours+':'+minutes+':'+seconds
}
_this.orderListArr.push(_this.orderList[key]);//因为定时器里改变原数组的值外面获取不到,所以借助新数组将修改后的每一项push到新数组
_this.use() //将新数组的值赋给原数组
}
},1000)
},
use(){
this.orderList=this.orderListArr;
},