私は完全なカレンダーとFirebaseでスケジュールアプリを構築しようとしています。しかし、私はカレンダーを変更(イベントの追加/削除/移動)時に更新することはできません。変更はFirebaseに即座に反映されます。新しいイベントでFirebaseでFullCalendarを更新
私はカレンダーinit
(Firebaseからロードされたとき)の後にデータを割り当てます。私はaddEventSource
とevents
プロパティとしてデータ配列を割り当てようとしました。 eventSource
のように見えるのは、events
というプロパティを割り当てるよりもうまく機能します。しかし、データが変更されたときには更新されません。
カレンダーのイベントを手動でレンダリングまたは削除するのは、動作するものだけです。しかし、私はリアルタイムで更新したい!ここで
私のコードの一部です:fullCalendar documentationで
// 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");
}
};
試したことのある行がコメントアウトしていますか?それは私には '.fullCalendar({events:events}); .fullCalendar( 'refetchEvents');はそれを行う必要があります。 – Lesley
はい、コメント行は私が試したことです。残念ながら、彼らは何もしません。 'refetchEvents'を含む...これは一般的な提案のようです。だから私はここで働いていない理由を理解していない。最新バージョンで機能が壊れていますか?または私は何か間違っているのですか?データソースとしての 'イベント'プロパティまたはデータソースとしての 'イベントソース'の両方でのみ機能しますか? – olefrank