2

我正在使用 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 或销毁?希望我说得通。

4

1 回答 1

0

没有看到函数很难说fetchEvents(),但它可能fetchAndRenderEvents()正在调用一个collection.reset。假设事件存储在集合中,调用collection.set将完全做到这一点,但是您必须设置视图以侦听集合上addremove事件以保持视图同步。

于 2014-04-16T00:34:08.180 回答