你可能会使用watch监听list
由于watch监听数据变化,对数据进行遍历时,当只有一个item符合条件时倒计时正常,一旦多个item符合条件,if语句内执行了一次以上,由于多个item发生改变会多次触发watch,导致倒计时越来越快,
错误效果
watch
={
List(val
){
var timer
= setTimeout(()=>{
val
.forEach((item
)=>{
if(item
.button_mark
===0 && item
.count_down
>0){
item
.count_down
--;
this.$apply()
}
})
timer
= null;
},1000)
}
}
解决办法
#####正确效果
1.添加method countDown作用于list
countDown(List){
setInterval(()=>{
for(var index in list)
{
if(list[index].button_mark===0 && list[index].count_down>0){
list[index].count_down--;
}
}
this.$apply()
},1000)
}
this.countDown(List);
如果觉得我的文章对你有帮助,欢迎关注我的blog
相关知识点
【Javascript】深入理解async/await的实现,Generator+Promise = Async/Await 【Javascript】深入理解this作用域问题以及new运算符对this作用域的影响 【Javascript】手写运算符new创建实例并实现js继承