为什么这样设置就倒计时就不生效?
来源:2-15 自定义组件(上)
yinikko
2020-02-28 00:13:47
<template>
<p>{{time}}</p>
</template>
<script>
export default{
data(){
return{
time:10
}
},
mounted(){
var t = this.time;
var vx = setInterval(function(){
t--;
if(t==0){
clearInterval(vx);
// t.$emit("end");
}
},1000)
}
}
</script>
1回答
好帮手慕夭夭
2020-02-28
同学你好,在页面中绑定的数据是time ,而改变值的是t 。t和time并不是一回事。 t = this.time只是把time的值赋值给t ,它们没有任何关系。改变t并不是改变time的值哦。

这里直接改变time的值就行。另外,定时器中包裹一个匿名函数,由于定时器是window调用的,那么定时器中通过this获取的是window中的time ,这样就不对了。我们要获取本组件中的time ,要使用箭头函数。因为箭头函数没有自己的作用域,它里面的this指向的就是这个组件了。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
相似问题