uiCalendar 在添加或删除事件时不会刷新



更改事件源中的元素后,我无法更新uiCalendar。

日历在模板中定义为:

<div ui-calendar="uiConfig.calendar" class="span8 calendar" ng-model="EC.calendarEvents" calendar="eventsCalendar"></div>

当我在EC.calendarEvents中添加或删除元素时,日历不会更新。

我已经尝试了以下所有语句来尝试在修改EC.calendarEvents后刷新日历:

uiCalendarConfig.calendars['eventsCalendar'].fullCalendar('render');
uiCalendarConfig.calendars['eventsCalendar'].fullCalendar('rerenderEvents');
uiCalendarConfig.calendars['eventsCalendar'].fullCalendar('refetchEvents');

我还尝试删除并重新添加源:

uiCalendarConfig.calendars['eventsCalendar'].fullCalendar('removeEvents');
uiCalendarConfig.calendars['eventsCalendar'].fullCalendar('addEventSource', $scope.EC.calendarEvents);

但这只会导致控制台中出现以下错误:

TypeError: Cannot read property 'hasTime' of undefined

错误发生在完整日历中.js在第 12272 行的 normalizeEventTimes 函数中。

错误行为:

eventProps.allDay = !(eventProps.start.hasTime() || (eventProps.end && eventProps.end.hasTime()));

在这篇文章中,他们建议保持对数组的相同引用,并将事件推送/拼接进出:AngularJS UI日历不更新日历上的事件

我也试过这个,但没有任何区别。

问题原来是 ui-calendar 期望接收其事件的格式不一致。

当控制器加载并且我填充 EC.calendarEvents 时,ui-calendar 期望接收数组数组。所以作业看起来像这样:

$scope.EC.calendarEvents = [createCalendarEventsFromCoreEvents(coreEvents)];

但是,每当我想更改EC.calendarEvents时,它必须只是一个数组,而不是数组数组。

因此,EC.calendarEvents的后续更新如下所示:

$scope.EC.calendarEvents = createCalendarEventsFromCoreEvents(filterEvents());
uiCalendarConfig.calendars['eventsCalendar'].fullCalendar('removeEvents');
uiCalendarConfig.calendars['eventsCalendar'].fullCalendar('addEventSource', $scope.EC.calendarEvents);

请注意,createCalendarEventsFromCoreEvents 周围缺少括号[]

相关内容

  • 没有找到相关文章

最新更新