【问题标题】:Should Fullcalendar call dateClick AND select events on a single time click?Fullcalendar 是否应该调用 dateClick 并单击一次选择事件?
【发布时间】:2020-01-15 19:38:55
【问题描述】:

我正在使用以下 Fullcalendar 库:

"@fullcalendar/bootstrap": "^4.1.0",
"@fullcalendar/core": "^4.1.0",
"@fullcalendar/daygrid": "^4.1.0",
"@fullcalendar/interaction": "^4.1.0",
"@fullcalendar/list": "^4.1.0",
"@fullcalendar/moment": "^4.1.0",
"@fullcalendar/moment-timezone": "^4.1.0",
"@fullcalendar/timegrid": "^4.1.0",

当我最初定义日历时,我将dateClickselect 选项设置为指向一个函数——同一个函数。啦啦:

calendar = new FullCalendar.Calendar(
    document.getElementById("calendar"), {
        'plugins': [
            "interaction",
            "dayGrid",
            "timeGrid",
            "bootstrap",
            "list",
            "moment",
            "momentTimezone"
        ],
        ...
        'dateClick': DateClick_and_Selection,
        'select': DateClick_and_Selection,
        ...

这是“工作”。我的问题是关于触发这两个动作的事件。

如果我正在查看 timeGridDay 视图并单击并拖动以选择时间范围,那么只会调用 select 函数 -- 这是我所期望的。

如果我只单击网格中的一个时间框,那么 dateClickselect 函数都会被调用——这不是我所期望的。

老实说,我不记得这种情况是否一直在发生,或者我只是注意到了。

这是新行为吗?

这正常吗?

如果正常,那么我知道传递给函数的info 对象的内容对于这两个事件是不同的。我知道我可以创建两个不同的函数,但我目前猜测这将是一场赛跑,看看哪个函数先触发。

我做错了吗?有没有更好的方法来解决这个问题?

我试图创建一个小提琴,但各种 fullcalendar 库似乎对顺序敏感,我找不到正确的顺序。

想法?

【问题讨论】:

  • “dateClick 和 select 函数都被调用了——不是我所期望的。”...为什么不呢?你点击了一个日期。您还选择了一个日期/时间(尽管是一个日期/时间,而不是一个范围......但 fullCalendar 会为此设置一个默认结束日期)。您的操作触发了这两个事件,仅此而已。为什么你决定让它们都触发相同的功能,我不太清楚。 (顺便说一句,这不是新行为,不,在以前的版本中是一样的。)这是一个可以 fork 的 CodePen,如果你想玩演示:codepen.io/ADyson82/pen/jOOzjXJ
  • “我做错了什么吗?有没有更好的方法来处理这个问题?”...处理什么?我不确定您要解决什么问题。这里有两种不同的回调。它们的目的略有不同。在某些情况下,它们可能都会响应相同的刺激而开火。这本身不是问题。所以很简单......决定使用哪一个,然后使用它。如果您不确定要使用哪一个,请说明您想要达到的目标,也许我们可以为您提供建议。
  • 谢谢!你让我以稍微不同的方式思考这个问题。所以问题是,如果两个函数挂钩都被调用并且我想对时间范围做一些事情,那么至少在我的情况下,第二个事件“获胜”。不幸的是,第二个函数调用并不总是具有我期望的日期/时间范围。我的“解决方案”似乎是不使用dateClick 钩子,只依赖select
  • 好主意。我想不出在很多情况下你都需要两者。

标签: javascript fullcalendar fullcalendar-4


【解决方案1】:

至少在我的情况下,“解决方案”是不同时实现 dateClickselect 挂钩。如果两者都实现了,那么两者都会触发点击事件(至少在月视图中)。由于两者都被触发,因此基本上有一场比赛,看哪一个最后完成,与最后一个事件相关的日期范围会覆盖第一个事件,在我的情况下也是如此。您的用例可能会有所不同。感谢 ADyson 帮助我以更清晰的方式思考这个问题。

【讨论】:

    猜你喜欢
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多