console
var app=new Vue({
el:'#app',
data:{
timerArr:[],
isdisabled:false,
list:[]
},
methods:{
start(){
let that=this;
let arr=[
{name:'test1',time:5,id:1,status:'进行中'},
{name:'test2',time:10,id:2,status:'进行中'},
{name:'test3',time:15,id:3,status:'进行中'},
{name:'test4',time:26,id:4,status:'进行中'},
]
that.list=that.list.concat(arr);
that.setCountDown()
},
setCountDown(startIndex){
var that=this;
that.timerArr.forEach(val=>{
clearInterval(val);
});
that.list.forEach((val,index)=>{
that.doCountDown(val.time,index);
})
},
add(){
let that=this;
that.isdisabled=true;
var arr=[
{name:'add1',time:7,id:5,status:'进行中'},
{name:'add2',time:13,id:6,status:'进行中'},
{name:'add3',time:9,id:7,status:'进行中'},
{name:'add4',time:15,id:8,status:'进行中'},
]
that.list=that.list.concat(arr);
that.setCountDown()
},
doCountDown(t,index){
let that=this;
that.timerArr[index]=setInterval(function(){
if(t > 0){
that.list[index].time=t--;
}else{
that.list[index].time=0;
that.list[index].status='已结束';
clearInterval(that.timerArr[index]);
}
},1000);
}
}
})
<div id="app">
<h4>模拟手机端下拉加载数据时设置多个定时器</h4>
<button @click='start'>获取数据</button>
<button @click='add' v-if='!isdisabled'>追加一次数据</button>
<p v-for='item in list'>
{{item.name}}
<span style='color:green' v-if='item.time > 0'>[{{item.status}}]</span>
<span style='color:grey' v-else>[{{item.status}}]</span>
--<b>{{item.time}}</b>
</p>
</div>