我正在使用fullcalendar重写一个调度组件,我想我错过了一些东西。我们最初使用的是1.5.4版本,但后来升级到了1.6.3,日历被包含在Backbone.js视图中。该视图利用骨干集合,并在成功获取后更新日历,这就是问题发生的地方。
使用1.5.4,我们可以通过调用'refetchEvents'来刷新计划,这会将所有事件呈现给计划。踢球者是在1.6.3中看起来事件全部被移除,然后被添加导致整个安排闪烁一会儿。 1.5.4从未这样做过。
我挖掘了fullcalendar代码,试着了解发生了什么,并发现1.6.3中的refetchEvents现在看起来像这样:
1.6.3
function refetchEvents() { // can be called as an API method
clearEvents();
fetchAndRenderEvents();
}
1.5.X
function refetchEvents() {
fetchEvents(currentView.visStart, currentView.visEnd); // will call reportEvents
}
我想要做的是在必要时更新或删除现有项目,并添加新项目(如果它们从未存在过),而不先删除所有项目(避免使用clearEvents())。
我是否必须手动跟踪现在渲染的内容,在骨干视图中调用updateEvent或destroy?希望我有意义。
答案 0 :(得分:0)
很难说没有看到fetchEvents()
函数,但可能是fetchAndRenderEvents()
正在调用collection.reset。假设事件存储在一个集合中,调用collection.set将完全相同,但是您必须设置视图以监听集合上的add
和remove
事件以保持同步视图。