Javascript AngularJS UI日历保存对旧事件的引用
我正在AngularJS应用程序中使用FullCalendar(AngularUI日历)。我正在使用EventSources数组传递事件:Javascript AngularJS UI日历保存对旧事件的引用,javascript,angularjs,fullcalendar,Javascript,Angularjs,Fullcalendar,我正在AngularJS应用程序中使用FullCalendar(AngularUI日历)。我正在使用EventSources数组传递事件:$scope.EventSources=[$scope.events]由控制器生成和更新$scope.events。我的问题是,每当我更新$scope.events,FullCalendar似乎都会保留对旧事件的引用 在index.html中: <div ui-calendar="uiConfig" ng-model="eventSources" cal
$scope.EventSources=[$scope.events]代码>由控制器生成和更新$scope.events
。我的问题是,每当我更新$scope.events
,FullCalendar似乎都会保留对旧事件的引用
在index.html中:
<div ui-calendar="uiConfig" ng-model="eventSources" calendar="myCalendar">
我发现了一个类似的问题(),Studio4Development的答案似乎是最相关的。但是,我认为我通过使用push和splice来维护同一个阵列实例。我通过跟踪库代码设法弄清楚了为什么会发生这种情况,但却发现我使用bower安装的angular ui日历已经过时。出于某些原因,bower默认安装版本0.8.1
,而0.9.0-beta.1
是与fullCalendar v2兼容所必需的。我无法在plnkr中重现此问题,因为plnkr默认提供fullCalendar 1.6,它与旧版本的angular ui calendar兼容
特别是功能
eventsWatcher.onRemoved = function(event) {
scope.calendar.fullCalendar('removeEvents', function(e) {
return e === event;
});
};
更新到
eventsWatcher.onRemoved = function(event) {
scope.calendar.fullCalendar('removeEvents', function(e) {
return e._id === event._id;
});
};
旧函数将向fullCalendar传递一个与任何内容都不匹配的筛选器,因为fullCalendar v2会向每个事件(例如,momentJS对象)添加几个字段
TL;博士
angular ui日历未保存对旧事件的引用。相反,它没有正确地删除事件。更新到最新的beta版解决了这个问题。编辑的事件不会更新
fullCalendar.js函数filterLegacyEventInstances()
中存在错误。您可以从以下位置进行修复:
return legacyEventInstance.id == legacyQuery;
致:
并使用它,而不是最小化代码。对eventSource或events使用函数,然后refetchEvents将work@RichardHermanson是否可以不调用refetchEvents来执行此操作?我很难理解()如何一致地重新渲染,但我的没有。如果添加的事件在当前视图中,则不会。我建议您直接使用fullcalendar,而不是直接使用$scope.events.length=0?有什么需要检查的plunkr/fiddl吗?@MarioLevrero感谢您的评论!我从$scope.events.length=0开始,但这并没有解决问题,但我设法找到了根本原因。事实证明,我安装了一个旧版本的angular ui calendar(bower默认这么做),它不支持fullCalendar v2。
eventsWatcher.onRemoved = function(event) {
scope.calendar.fullCalendar('removeEvents', function(e) {
return e._id === event._id;
});
};
return legacyEventInstance.id == legacyQuery;
return legacyEventInstance._id == legacyQuery;