在具有全日历4和角度8的init上加载事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在具有全日历4和角度8的init上加载事件相关的知识,希望对你有一定的参考价值。

我已经将全日历从v3更新到了v4,并且正在使用角度8。问题是如何在initdate change上加载事件。

我尝试过此设置:

<full-calendar
        #calendar
        [defaultView]="'timeGridWeek'"
        [plugins]="calendarPlugins"
        [header]="calendarHeader"
        [allDaySlot]="false"
        [slotEventOverlap]="true"
        [editable]="true"
        [selectable]="true"
        [slotLabelFormat]="'HH:mm'"
        [timeZone]="'local'"
        [nowIndicator]="true"
        [aspectRatio]="1"
        [eventTimeFormat]="'HH:mm'"
        [height]="'parent'"
        [firstDay]="1"
        [buttonText]="buttonText"
        [minTime]="'06:00'"
        [maxTime]="'23:00'"
        [views]="views"
        [events]="calendarEvents"
        [weekends]="false"
></full-calendar>

该组件获取[events]中的事件,并且期望使用数组。我可以在组件的初始化上加载数组,但是我不知道如何在日期更改时加载新事件(您单击下周的按钮)。

在fullcalendar V3中,我这样加载事件:


settings = {
...
   events: function(start, end, timezone, callback) {
     this.callBaclend(start, end)
     .subscribe(resultData=>{
        callback(resultData);
     })
   }
...
}

此功能每次在日期或视图改变时触发,并且要获得红利,有startend。如何在V4中使用angular进行类似的通话?我正在浏览文档,但找不到解决方案。

答案

在您的示例中,请保持此html不变:

<full-calendar
        #calendar
        [defaultView]="'timeGridWeek'"
        [plugins]="calendarPlugins"
        [header]="calendarHeader"
        [allDaySlot]="false"
        [slotEventOverlap]="true"
        [editable]="true"
        [selectable]="true"
        [slotLabelFormat]="'HH:mm'"
        [timeZone]="'local'"
        [nowIndicator]="true"
        [aspectRatio]="1"
        [eventTimeFormat]="'HH:mm'"
        [height]="'parent'"
        [firstDay]="1"
        [buttonText]="buttonText"
        [minTime]="'06:00'"
        [maxTime]="'23:00'"
        [views]="views"
        [events]="calendarEvents"
        [weekends]="false"
></full-calendar>

然后在相应的.ts文件中,将calendarEvents定义为函数:

export class SomeComponent implements OnInit {

  ...

  constructor() {}

  ...

  calendarEvents = (dates, callback) => {
    console.log('Fetch events for dates:', dates.start, dates.end);

    this.callBackend(dates.start, dates.end)
       .subscribe(resultData => {
         callback(resultData);
       })
  };
}

以上是关于在具有全日历4和角度8的init上加载事件的主要内容,如果未能解决你的问题,请参考以下文章

Java 中来自 DB 的全日历加载事件

离子框架和角度 ui 日历问题?

Prime Ng 日历触发页面重新加载

如何使用角度引导日历为重复事件提供 dtStart 和 until?

从数据库中填充全日历 javascript 中的事件

Swift 4.0 Eventkit 无法正确获取日历和事件