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),不需要加圆括号。