ViewRender 后 FullCalendar 视图冻结

问题描述 投票:0回答:2

我在这里遇到了一个很大的问题,我尝试在使用同步点更改视图时加载事件。更改同步点效果很好,我还可以发送和接收信息。但日历仍然冻结,我必须更改几个月才能再次开始工作。然后我可以回到上个月。 我使用 AngularJS 来加载事件,并使用

$q
在请求之前加载数据:

$q(function(resolve, reject) {
  resolve(beforeSendStatus());
}).then(function() {
  EventService.get({
    start: moment(start).format("DD-MM-YYYY"),
    end: moment(end).format("DD-MM-YYYY"),
    format: 'FC',
    onlyMe: false
  }).then(function(data) {
    $('.status').find('i').removeClass("fa-spin fa-circle-o-notch").addClass('fa-check');

    Calendar.fullCalendar('renderEvents', data.data);
    eventLenghtCalc(view, 325);
  }, function(error) {
    $('.status').find('i').removeClass("fa-spin fa-circle-o-notch").addClass('fa-close').css({
      'color': 'red'
    });
    toastr.error(error.data);
  });
})

如果我用

$q
移除零件,效果很好。 你们中有人在 viewRender 回调中遇到过异步函数的问题吗?

谢谢,祝你有美好的一天!

ps。

beforeSendStatus()
功能仅更改微调器的图标。

javascript jquery angularjs asynchronous fullcalendar
2个回答
0
投票

您的日历对象是什么?是https://fullcalendar.io/吗?

如果将 jquery 代码与 Angular 混合使用,请小心;混合不 工作顺利。更好的方法是添加一个全局变量并使用 ng-class 来 更新您的通话。

我建议使用 Angular ui 组件,例如:http://angular-ui.github.io/ui-calendar/


0
投票

首先,我相信您可以将 eventSources 用于多个偶数源。

如果您仍然想“手动”添加事件,请使用 addEventSource 函数。

对于加载程序,您还可以使用 fullCalendar 的 loading 回调。

© www.soinside.com 2019 - 2024. All rights reserved.