我在C#.Net项目中使用Fullcalendar 3.3.1。

我定义日历

$("#calendar").fullCalendar({
    'header': {
        'left': "prev,next today",
        'center': "title",
        'right': "month,agendaWeek,agendaDay"
    },
    'dayClick': function (myDate, jsEvent, view) {
        var tmpDate = moment(myDate.format());

        if (view.name !== "agendaDay") {
            console.log("clicked on non agendaDay: " + tmpDate.format());
            $("#calendar").fullCalendar("gotoDate", tmpDate.format());
            $("#calendar").fullCalendar("changeView", "agendaDay");
        } else {
            console.log("clicked on agendaDay");
        }
    },
    ...


默认情况下,网页显示month视图。单击一个日期段(实际上在除agendaDay以外的任何视图中)都将带您进入agendaDay视图以了解单击日期...或者应该单击该日期。今天早上在做这件事,但现在已经停止了。现在,无论我单击什么日期,它都带我到“今天”。

我已经在小提琴中对此进行了测试,但是它可以在其中工作。我可以在console.log中看到预期的日期。我可以使用Chrome开发人员工具并在gotoDate调用上设置断点,我可以看到正确的日期,但最终结果是“今天”。

我直接使用了myDate参数,它是一个moment对象,但是没有用。我决定使用tmpDate变量来确保某些内容不会更改我下方的日期。

我想念什么?

编辑对于这个问题,我颠倒了gotoDatechangeView调用的顺序,现在它可以正确设置新视图的日期。去搞清楚

最佳答案

更改视图会将您的日期重置为今天。

您应该先changeView然后转到gotoDate,或者如果您想导航到新日期同时切换到新视图,则可以这样指定日期参数:

$('#calendar').fullCalendar('changeView', 'agendaDay', '2017-06-01');


在这里工作jsfiddle

09-26 13:49