2016-12-01 57 views
0

私は完全なカレンダーとFirebaseでスケジュールアプリを構築しようとしています。しかし、私はカレンダーを変更(イベントの追加/削除/移動)時に更新することはできません。変更はFirebaseに即座に反映されます。新しいイベントでFirebaseでFullCalendarを更新

私はカレンダーinit(Firebaseからロードされたとき)の後にデータを割り当てます。私はaddEventSourceeventsプロパティとしてデータ配列を割り当てようとしました。 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"); 
    } 
}; 
+0

試したことのある行がコメントアウトしていますか?それは私には '.fullCalendar({events:events}); .fullCalendar( 'refetchEvents');はそれを行う必要があります。 – Lesley

+0

はい、コメント行は私が試したことです。残念ながら、彼らは何もしません。 'refetchEvents'を含む...これは一般的な提案のようです。だから私はここで働いていない理由を理解していない。最新バージョンで機能が壊れていますか?または私は何か間違っているのですか?データソースとしての 'イベント'プロパティまたはデータソースとしての 'イベントソース'の両方でのみ機能しますか? – olefrank

答えて

0

、私が見つかりました:

イベントソースを動的に のaddEventSourceとremoveEventSourceのようなメソッドを介して操作する必要があります。

。したがって、私はあなたがEventSourceObjectを使用して、このような何かをする必要があると思う

  • eventSources
    • イベント:Thusly、 次のオプションの動的な設定が適用されません
      // 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);   
      
      }; 
      
    関連する問題