Javascript 如何强制重新计算未更改的参数? 我问题的背景
我每天通过MQTT收到一次(比如说,在01:15)当天的两个时间戳:事件的开始和结束(这是一个家庭仪表盘,令人乏味的现实是,这是我的孩子在给定的一天上学的时间) 我今天在仪表板上显示的是Javascript 如何强制重新计算未更改的参数? 我问题的背景,javascript,vue.js,Javascript,Vue.js,我每天通过MQTT收到一次(比如说,在01:15)当天的两个时间戳:事件的开始和结束(这是一个家庭仪表盘,令人乏味的现实是,这是我的孩子在给定的一天上学的时间) 我今天在仪表板上显示的是9:00→ 17:10。当接收到新的MQTT消息并且start和end发生更改时,此信息将更新 这很有效 我现在想添加一个额外的信息,以显示 9:00→ 17:10(27分钟后) 27分钟内的部分是从现在到学校一天结束的时间(17:10)。我知道如何计算和显示它(包括只有当“现在”在开始和结束之间时它才可见)
9:00→ 17:10
。当接收到新的MQTT消息并且start
和end
发生更改时,此信息将更新
这很有效
我现在想添加一个额外的信息,以显示
9:00→ 17:10(27分钟后)
27分钟内的部分是从现在到学校一天结束的时间(17:10
)。我知道如何计算和显示它(包括只有当“现在”在开始和结束之间时它才可见)
这是通过以下构造实现的:
{{ extractTime(enfant.start) }} → {{ extractTime(enfant.end) }} <span v-if="dansCreneau(enfant.start, enfant.end)">({{dansTime(enfant.end)}})</span>
{{extractTime(enfant.start)}→ {{extractTime(enfant.end)}}({{dansTime(enfant.end)}})
extractTime
获取ISO日期并输出24小时时间
dansCreneau
如果“现在”在两个日期之间,则返回一个true
,否则返回false
dansTime
以人性化的方式返回从现在到学校一天结束的时间
我的问题
我知道如何将其显示一次,但是从Vue的角度来看,括号之间的内容只有一次计算,没有什么需要重新计算,因为没有任何变化
我可以通过setInterval(XXX,55000)运行(某物)的连续更新我想知道XXX应该做什么。我最初想在那里强制enfant=enfant
,但这不会改变enfant
的值,因此不会触发重新计算
强制重新计算并因此更新剩余时间的正确方法是什么?只需将立即存储在组件数据中,并创建计算属性,该属性将计算与存储的立即
和儿童的时间差。结束
在setInterval
中立即更新
请参见这个简单的时钟示例:
newvue({
el:“#应用程序”,
数据:{
现在:新日期(),
计时器:空
},
计算:{
时间:函数(){
返回这个.now.toLocaleTimeString();
}
},
挂载:函数(){
让自我=这个;
this.timer=setInterval(函数(){
self.now=新日期()
}, 1000)
},
beforeDestroy:function(){
clearInterval(这个.timer)
}
})
{{time}}