我正在使用全日历重写调度组件,我认为我错过了一些东西。我们最初使用的是 1.5.4 版,但后来升级到 1.6.3,日历作为 Backbone.js 视图的一部分包含在内。视图利用主干集合,并在成功提取后更新日历,这就是问题发生的地方。
使用 1.5.4,我们可以通过调用"refetchEvents"来刷新计划,这会将所有事件呈现到计划中。问题是,在 1.6.3 中,似乎首先删除了所有事件,然后添加导致整个计划闪烁片刻。1.5.4 从未这样做过。
我深入研究了完整的日历代码以尝试了解发生了什么,发现 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 或销毁?希望我说得有道理。
很难说没有看到fetchEvents()
函数,但可能是fetchAndRenderEvents()
正在调用 collection.reset。 假设事件存储在集合中,调用 collection.set 将完全做到这一点,但随后您必须设置视图以侦听集合上的add
和remove
事件,以保持视图同步。