【发布时间】:2018-07-04 09:06:48
【问题描述】:
将 FullCalendar v3.9.0 与 jQuery v3.3.1 结合使用。我有一个从 MySQL 获取日历数据的 SailsJS 应用程序。
来自 MySQL 的 this.me.calendar 目前看起来像这样。
[{"start":"2018-07-04T13:30:00","end":"2018-07-04T18:00:00","works":["2"]}]
我的 FullCalendar 代码如下所示。
let that = this;
that.me.calendar = this.me.calendar;
$('#calendar').fullCalendar({
header: {
left: 'today prev,next',
center: 'title',
right: 'agendaWeek,agendaDay'
},
views: {
week: {
titleFormat: 'DD.MM.YYYY'
}
},
defaultView: 'agendaWeek',
locale: 'fi',
weekends: false,
scrollTime: '07:00',
businessHours: {
start: '7:00',
end: '21:00',
},
events: function(start, end, timezone, callback) {
let events = that.me.calendar ? that.me.calendar : [];
console.log(events);
callback(events);
},
editable: true,
selectable: true,
selectHelper: true,
select: (start, end) => {
let duration = (end - start) / 1000;
if (duration == 1800) {
// Set default duration to 1 hour
end = start.add(30, 'mins');
return $('#calendar').fullCalendar('select', start, end);
}
let eventData = {
start: start,
end: end,
works: []
}
$('#calendar').fullCalendar('renderEvent', eventData);
$('#calendar').fullCalendar('unselect');
},
eventClick: (event, element) => {
$('#event-works').text(event.works.join(','));
$('#start-date').text(moment(event.start).format('d.MM.YYYY HH:mm'));
$('#end-date').text(moment(event.end).format('d.MM.YYYY HH:mm'));
$('#workModal').modal('show');
$('#add-work-to-event').click(() => {
let work = $('#work').val();
if(_.includes(event.works, work)) return;
event.works.push(work);
$('#event-works').text(event.works.join(','));
});
}
});
虽然上面的代码不会发送GET,但它不会在日历中显示事件。但是,如果我将事件更改为 events: this.me.calendar,SailsJS 控制台将显示 GET /account/%22[%7B/%22start/%22:/%222018-07-04T13:30:00/%22,/%22end/%22:/%222018-07-04T18:00:00/%22,/%22works/%22:[/%222/%22]%7D]%22 (1ms 404)。
我还尝试将其更改为events: JSON.stringify(this.me.calendar),它仍然在控制台中给出了 GET 请求。
如果我自己在事件中输入数组,它就可以工作。 events 函数中的 console.log 也返回相同的数组。
有没有办法让我简单地为 FullCalendar 输入我的数组,还是必须让它从 URL 获取 JSON?
【问题讨论】:
标签: javascript jquery node.js fullcalendar sails.js