首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JS/Vue.js中检查时间戳是否大于当前时间(没有重新加载页面)

问如何在JS/Vue.js中检查时间戳是否大于当前时间(没有重新加载页面)
EN

Stack Overflow用户
提问于 2020-10-18 02:29:50
回答 2查看 476关注 0票数 1

我正在使用Vue.js创建一个网站,并试图在item.queue_entry_time > (NOW - 1 hour)中突出显示一行

queue是一个具有以下属性的对象数组

代码语言:javascript
复制
queue_entry_time
queue_call_time
queue_entrant_name

标记

代码语言:javascript
复制
<template v-for="(item, index) in queue">
  <div class="">
  </div>
</template>

当满足上述条件时,我要做的是在div中显示class1。我不知道如何做到这一点,因为创建一个函数来返回当前的时间戳是固定的,并且不会随着时间的推移而改变。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-18 03:15:27

您可以向对象(例如,名为recent)添加一个布尔属性,该属性是基于周期性地的queue_entry_time设置的。

代码语言:javascript
复制
export default {
  //...
  mounted() {
    this._timer = setInterval(() => {
      const anHourAgo = Date.now() - (60 * 60 * 1000)
      for (const q of this.queue) {
        q.recent = q.queue_entry_time > anHourAgo
      }
    }, 5000)
  },
  beforeDestroy() {
    clearInterval(this._timer)
  },
}

然后,使用基于每个对象的条件渲染 recent来显示class1

代码语言:javascript
复制
<template v-for="(item, index) in queue">
  <div v-if="item.recent">class1</div>
</template>

如果您的实际意思是要基于此条件应用类,则可以使用类绑定

代码语言:javascript
复制
<template v-for="(item, index) in queue">
  <div :class="{ class1: item.recent }">...</div>
</template>

演示

票数 3
EN

Stack Overflow用户

发布于 2020-10-18 03:26:31

按以下方式设置标记

代码语言:javascript
复制
<template v-for="(item, index) in queue">
    <div :class="{class1: checkCutoff(item)}">
    
    </div>
</template>

那你就得

  • 向data中添加一个属性以保存截止值
  • 添加由method调用的:class
  • 向mounted添加代码以启动间隔
  • 向beforeDestroy添加代码以停止间隔

所以,像这样:

代码语言:javascript
复制
data: () => ({
    cutoff: 0
}),
methods: {
    checkCutoff(item) {
        return item.queue_entry_time > cutoff;
    }
},
mounted() {
    this.interval = setInterval(() => this.cutoff = new Date - 60 * 60 * 1000, 1000);
},
beforeDestroy() {
    clearInterval(this.interval);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64409155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档