3.10 定期计算

有时候组件需要显示一些时刻变化的值,而这些值也是用变量的形式呈现,但普通的数据初始化后,数据是不会变化的,例如我们在Foot组件的最后,添加一个时间
<template>
    <div class="footer hidden-xs">
        <p class="legal">
            <a href="/#/about">xxxx网络科技有限公司</a>
            ©2016-{{year}}版权所有.
            <a href="http://beian.miit.gov.cn">粤ICP备09084978号-2</a>
            <br/>
            •Designby
            <a href="http://www.freecsstemplates.org/">FreeCSSTemplates</a>
            •Iconsby
            <a href="http://famfamfam.com/">FAMFAMFAM</a>
            <br/>
            <span>{{time}}</span>
        </p>
    </div>
</template>
setInterval是一个定时执行函数,它有两个参数,第一个参数是要执行的函数,第二个参数是间隔的时间,以毫秒为单位。
export default{
    name:"Footer",
    props:["name"],
    data(){
        return{
            year:"",
            time:""
        }
    },
    created:function(){
        setInterval(()=>{
            this.time=this.getTime();
        },
        1000);
    },
    methods:{
        getTime(){
            let date=new Date();
            let year=date.getFullYear();
            let month=date.getMonth()+1;
            let day=date.getDate();
            let hour=date.getHours();
            let minute=date.getMinutes();
            let second=date.getSeconds();
            let time=year
                +'-'+month+'-'+day+' '+hour+':'+minute+':'+second;
            return time;
        }
    }
}
这里要注意是
setInterval的第一个参数,是一个lambda表达式,它表示一个可执行的函数
    ()=>{
          要执行的代码
      }

也可以使用非lambda的形式:
export default{
    name:"Footer",
    props:["name"],
    data(){
        return{
            year:"",
            time:""
        }
    },
    created:function(){
        setInterval(this.getTime,1000);
    },
    methods:{
        getTime(){
            let date=new Date();
            let year=date.getFullYear();
            let month=date.getMonth()+1;
            let day=date.getDate();
            let hour=date.getHours();
            let minute=date.getMinutes();
            let second=date.getSeconds();
            let time=year
                +'-'+month+'-'+day+' '+hour+':'+minute+':'+second;
            this.time=time;
        }
    }

特别注意,setInterval里面的第一个参数是函数的名字(也就是this.getTime),不需要加圆括号。