我收集了Events件.这些将根据其状态呈现在列表中-即将到来/现场/以前.因此,渲染取决于当前时间.如何使计算出的属性随着时间的推移而更新/重新计算?

<template>
    <div>
        <h2>Upcoming events</h2>
        <p v-bind:key="event.name" v-for="event in upcomingEvents">{{ event.name }}</p>

        <h2>Live events</h2>
        <p v-bind:key="event.name" v-for="event in liveEvents">{{ event.name }}</p>

        <h2>Previous events</h2>
        <p v-bind:key="event.name" v-for="event in previousEvents">{{ event.name }}</p>
    </div>
</template>

<script>
    import Event from '../Event.js'

    export default {
        data() {
            return {
                events: []
            }
        },

        computed: {
            upcomingEvents() {
                return this.events.filter(event => event.isUpcoming())
            },

            liveEvents() {
                return this.events.filter(event => event.isLive())
            },

            previousEvents() {
                return this.events.filter(event => event.isPrevious())
            },
        },

        mounted() {
            // this.events are populated here 
        }
    }
</script>

推荐答案

您可以声明一个与时间相关的数据变量,并使用setInterval()来更新它:

data() {
    return {
        events: [],
        now: Date.now()
    }
},
created() {
    var self = this
    setInterval(function () {
         self.now = Date.now()
    }, 1000)
},
computed: {
    upcomingEvents() {
        return this.events.filter(event => event.isUpcoming(this.now))
    },
    liveEvents() {
        return this.events.filter(event => event.isLive(this.now))
    },
    previousEvents() {
        return this.events.filter(event => event.isPrevious(this.now))
    }
}

请注意,您需要在计算(computed)属性中使用now来更新它们.

Vue.js相关问答推荐

有没有办法在 Quasar 中为明暗模式创建我自己的 colored颜色 ?

vue3 输入标签给出错误 Vue.use 不是函数

作为props 传递的原始 ref 的 Vue 3 react 性

Svelte 中的简单react 性实验以意想不到的方式失败了. Vue 等效项没有

Vue3如何将自定义事件绑定到路由视图中的特定组件?

更改 Vuetify 轮播高度

带有热重载的 docker 容器上的 Vue.js 应用程序

动态插入字符串上的 Vue 事件处理程序不起作用

如何更新手动安装的 vue 组件上的props?

PhpStorm 中Expected预期表达式

如何在某些异步数据(在 Vuex 存储中)加载之前防止任何路由?

Vuetify 2 个工具栏和 1 个导航抽屉,navigation drawer导航抽屉上方有 1 个工具栏

在 v-for 循环中使用 v-model

Vuejs 3 从子组件向父组件发出事件

中文而不是英文的Element UI分页

如何通过 Axios 发送文件到 Laravel

如何在 Vue.js 插槽范围内传递方法

使计算的 Vue 属性依赖于当前时间?

脚本npm run dev和npm run watch是做什么用的?

使用 VueJS 使用 3rd 方库打印元素