将子标题添加到列表,但仅一次

时间:2019-05-13 11:00:49

标签: javascript vue.js vuejs2 vuetify.js date-fns

我需要在列表中添加一个子标题。当前,每个日期为今天的条目都有一个子标题,但我只想设置一次。问题似乎是我无法访问todaySubheader<span v-if="todaySubheader的更新值。

HTML

<template v-for="(meetup, index) in filteredItems">
            <v-subheader
              v-if="checkIsToday(meetup.date)"
              inset
            >
            <span v-if="todaySubheader === false">TODAY</span>
            </v-subheader>

脚本

data () {
    return {
      todaySubheader: false,
[...]
checkIsToday (val) {
  if (val && this.todaySubheader === false) {
    this.todaySubheader = true
  }
  return isToday(new Date(val))
},

如何在 v-if =“ todaySubheader 中访问 this.todaySubheader 的值?

2 个答案:

答案 0 :(得分:2)

您确实可以访问todaySubheader,但是您不想这样做,因为在调用函数时,您在那个v-for中对其进行了多次更改。您可能想获取第一次today聚会的索引:

<v-subheader v-if="index === todayIndex"
...
computed: {
  todayIndex() {
    return this.filteredItems.findIndex(v => isToday(new Date(v.date) ) )
  },

答案 1 :(得分:1)

您可以创建一个全局javascript变量:

var todayAdded=false;

然后您的checkToday方法将执行以下操作:

checkIsToday (val) {
  if (isToday(new Date(val))) {
    if (!todayAdded)
       todayAdded= true;
    return true;
  }
  return false;  
},

和您的html:

<template v-for="(meetup, index) in filteredItems">
            <v-subheader
              v-if="checkIsToday(meetup.date)">
            <span v-if="!todayAdded">TODAY</span>
            </v-subheader>