为什么这样设置就倒计时就不生效?

来源: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的值哦。

http://img.mukewang.com/climg/5e58af2d09e8995c05520713.jpg

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

http://img.mukewang.com/climg/5e58b08409f14b3205700545.jpg

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

0

0 学习 · 10739 问题

查看课程