Javascript 根据新事件使用Firebase更新FullCalendar
我正在尝试构建一个带有完整日历和Firebase的日程表应用程序。但我无法获取日历上的更改(添加/删除/移动的事件)更新。这些变化会立即反映在Firebase中 我在calendarJavascript 根据新事件使用Firebase更新FullCalendar,javascript,jquery,firebase,firebase-realtime-database,fullcalendar,Javascript,Jquery,Firebase,Firebase Realtime Database,Fullcalendar,我正在尝试构建一个带有完整日历和Firebase的日程表应用程序。但我无法获取日历上的更改(添加/删除/移动的事件)更新。这些变化会立即反映在Firebase中 我在calendarinit'ing(从Firebase加载时)之后分配数据。我尝试将数据数组分配为addEventSource和事件属性。似乎eventSource比指定为events属性更有效。但它不会在数据更改时更新 唯一有效的方法是手动渲染或删除日历中的事件。但我想要实时更新 以下是我的一些代码: // index.js exp
init
'ing(从Firebase加载时)之后分配数据。我尝试将数据数组分配为addEventSource
和事件
属性。似乎eventSource
比指定为events
属性更有效。但它不会在数据更改时更新
唯一有效的方法是手动渲染或删除日历中的事件。但我想要实时更新
以下是我的一些代码:
// index.js
exports.getEvents = function() {
return new Promise(function(resolve, reject) {
firebase.getEvents()
.then(calendar.addEventSource)
.then(function() {
resolve(true);
})
.catch(function(error) {
console.warn(error);
reject(error);
});
});
}
// firebase.js
exports.getEvents = function() {
return new Promise(function (resolve, reject) {
var ref = firebase.database().ref().child("bookings");
ref.on('value', function (snap) {
var arr = obj2arr(snap.val());
calendar.render(arr);
resolve(arr);
}, function (err) {
console.warn("firebase getBookings", err);
reject(err);
});
});
}
// calendar.js
exports.render = function(events) {
if ($calendar) {
$calendar.fullCalendar( 'refetchEvents' );
//$calendar.fullCalendar( 'removeEvents' );
//$calendar.fullCalendar( {events: events} );
//$calendar.fullCalendar( 'refetchEventSources', arr );
//$calendar.fullCalendar( 'rerenderEvents' );
console.log("calender rendered");
}
};
在调查中,我发现:
事件源应该通过如下方法进行动态操作
addEventSource和removeEventSource。因此,动态设置
以下选项不适用:
- 事件
- 事件源
// firebase.js
// (Inside 'value' callback):
var newEventSource = {events: snap.val()};
calendar.render(newEventSource);
// calendar.js
exports.render = function(newSource) {
$calendar.fullCalendar('removeEventSources');
$calendar.fullCalendar('addEventSource', newSource);
};
你评论过的那些行是否是你尝试过的不起作用的东西?在我看来,
.fullCalendar({events:events})。完整日历(“参考事件”)代码>应该可以。是的,注释行是我尝试过的。不幸的是,他们什么也不做。包括“refetchEvents”。。。这似乎是普遍的建议。所以我不明白为什么它在这里不起作用。最新版本中的功能是否已损坏?还是我做错了什么?它是否仅与作为数据源的“events”属性或作为数据源的“eventSource”一起工作?