Parameters 重新引用事件/重新引用事件问题

Parameters 重新引用事件/重新引用事件问题,parameters,fullcalendar,Parameters,Fullcalendar,我不确定我是否正确使用了它,所以我的问题可能是我的错误理解,而不是一个bug或更大的问题 我有一个完整的日历,从docready启动,如下所示(为了简洁起见,省略了一些代码) json响应页面成功返回由所选技术人员在初始加载时过滤的事件。主页面上有一个控件,用于更改用户希望在日历上看到的技师。我无法获取日历以重新渲染并将技师参数传递到json reposne文件 在单击按钮时,我再次尝试调用renderEvents()。这会在页面上放置一个重复的日历。在调用renderEvents()之前,我已

我不确定我是否正确使用了它,所以我的问题可能是我的错误理解,而不是一个bug或更大的问题

我有一个完整的日历,从docready启动,如下所示(为了简洁起见,省略了一些代码)

json响应页面成功返回由所选技术人员在初始加载时过滤的事件。主页面上有一个控件,用于更改用户希望在日历上看到的技师。我无法获取日历以重新渲染并将技师参数传递到json reposne文件

在单击按钮时,我再次尝试调用renderEvents()。这会在页面上放置一个重复的日历。在调用renderEvents()之前,我已经尝试了$('calendar')。('destroy')。这是可行的,但是如果我在一个视图中,而不是默认的月份视图中,它将一直重置,并且重建日历对于刷新来说似乎是一个很大的工作

我还尝试了$('calendar')('rerenderEvents')和$('calendar')('refetchEvents')。我甚至尝试提前重置源代码$('#calendar').fullCalendar('addEventSource','JsonResponse.ashx?technicans='+technicals)

在最后一个例子中,我可以在debug中查看json响应,它会选择filter参数并返回按最新参数过滤的结果,但是页面上的日历不会用新值刷新

如何使用新参数刷新日历


提前感谢。

在pseudo中,删除旧事件,添加新事件源,然后重新蚀刻事件(从唯一的源,即现在的新源):

  • 这未经测试,但请尝试删除旧事件:

  • 然后添加新的事件源(根据文档,这将获取事件并在屏幕上显示它们,但它似乎不起作用,因此使用下一个类似刷新的命令进行操作):


编辑:而不是:

然后重新蚀刻并渲染新事件:

或:

  • 正如您所提到的,使用以下方法,运行addEventSource将获取新事件,因此这将呈现新获取的事件:
谢谢你的帮助

以下是根据Scoobler的建议所做的工作——工作步骤是(1)removeEvents。(2) addEventSource,(3)ReRelenderEvents

$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', 'JsonResponse.ashx?technicans=' + technicians);
$('#calendar').fullCalendar('rerenderEvents');
上面的解决方案是可行的,但每次运行它时,它都会添加一个eventSource

因此,当您需要运行
$('#calendar').fullCalendar('refetchEvents')您将从所有来源获得事件,因此许多重复事件和来自所有以前来源的事件

适合我的解决方案是:

$('#calendar').fullCalendar('removeEventSource', 'JsonResponse.ashx?technicans=' + technicians);
technicians = new_technicians_value;
$('#calendar').fullCalendar('addEventSource', 'JsonResponse.ashx?technicans=' + technicians);
而且不需要“重新发布”或“重新发布事件”

在“addEventSource”之后,将立即从新源获取事件

之后,“refetchEvents”将在需要时按预期工作

newEvents = [...]

 $('#calendar').fullCalendar('removeEvents');
 $('#calendar').fullCalendar( 'addEventSource', newEvents);

不需要“重新发布”,就像一个符咒

在fulcalendar 4.x中,我使用了如下内容:

按常规初始化日历:

 var calendar = $('#calendar').fullCalendar({
       ...
        events: "JsonResponse.ashx?technicians=" + technicians,
       ... 
 });
然后,当您需要重新绘制事件时:

var eventSources = calendar.getEventSources();
for(var i in eventSources)
{
    var evres=eventSources[i];
    evres.refetch();
}
calendar.render();

非常感谢您发布解决方案,这让我发疯了!当我这样做的时候,我总是得到新的拷贝。这对我来说非常有效。我在事件列表中使用了一个数组,而不是$('#calendar')。fullCalendar('removeEvents')$(“#日历”).fullCalendar('addEventSource',eventList)$(“#日历”).fullCalendar('rerendervents');不适合我。看看我的新活动。[{“bookingid”:“3232”,“status”:“待定存款”,“title”:“bookingid”,“start”:“2016-10-18T06:45:00+00:00”,“end”:“2016-10-18T11:30:00+00:00”},{“bookingid”:“3231”,“status”:“待定批准”,“title”:“HelloFriends”,“start”:“2016-10-18T10:30+00:00”,“end”:“2016-10-18T11:30+00:00”}]
 var calendar = $('#calendar').fullCalendar({
       ...
        events: "JsonResponse.ashx?technicians=" + technicians,
       ... 
 });
var eventSources = calendar.getEventSources();
for(var i in eventSources)
{
    var evres=eventSources[i];
    evres.refetch();
}
calendar.render();