2017-10-12 43 views
2

私はPOCプロジェクトでFullCalendarを使用しています。私が持っているのは、2つのデータグリッド(jTableを使用)です。そこにいくつかの行を置いて、「Send Request」をクリックしてJSONを作成します。それは私のバックエンドアプリケーションに送信され、処理され、応答(まだJSON内)が返されています。私のAJAX-success-handlerはこのレスポンスを受け取り、それをカレンダーに入れるためにJavaScriptオブジェクトに変換します。私はこのような建設を持っていた限りローカル変数からFullcalendarリフレッシュイベント

は:

$.post({ 
    // options cut for clean output 
    success: function(data, textStatus, jqXHR) { 
     var eventsToPut = []; 

     $.each(data.taskList, function(k, v) { 
      // OBJECT is created when processing response 
      eventsToPut.push (OBJECT); 
     }); 

     $('#calendar').fullCalendar({ 
      events: eventsToPut, 
      // config of calendar cut 
     });   
    }        
}); 

それは正常に動作します。応答がレンダリングされ、イベントがカレンダーに表示されます。問題は、データグリッドのデータを変更してバックエンドに要求を再送信する場合です。応答は有効ですが、カレンダーはイベントを更新していません。

私は、EMPTYイベントを使用してカレンダーの作成をjQuery.ready()セクションに抽出し、カレンダーの更新時にイベントが発生したときにカレンダーを更新/更新しようと決めました。これまでのところ、私は「成功」ハンドラーで試してみました:

$('#calendar').fullCalendar('refetchEvents'); //It should work with feeds but I've tried anyway 
$('#calendar').fullCalendar({ events: eventsToPut}); 
$('#calendar').fullCalendar('updateEvents', eventsToPut); 

しかし、カレンダーはデータをリフレッシュしません。誰も私が新しいデータでカレンダーを更新するのを手伝ってもらえますか?すべての

+0

方法を追加するためにaddEventSourceを使用することができ、その後、removeEvents

$('#calendar').fullCalendar('removeEvents', function() { return true; }); 

を使って、カレンダーからすべてのイベントを削除しますhttps://fullcalendar.io/docs/event_data/addEventSource/)成功コールバックには?新しいイベントの配列で。あなたはおそらく以前の出来事を最初に取り除かなければならないでしょう。 –

答えて

1

まず、(あなたは[addEventSource` `]の使用について、新しいイベント

var eventsToPut = []; 

$.each(data.taskList, function(k, v) { 
    // OBJECT is created when processing response 
    eventsToPut.push(OBJECT); 
}); 

$('#calendar').fullCalendar('addEventSource', eventsToPut, true); 
+0

これはうまくいきますが、問題は以前のタスクがまだ存在するということです(たとえば、既存のものを編集しただけの場合)。返された応答は再びレンダリングされます。 – Chlebik

+0

これを修正しました:$( '#calendar')。fullCalendar( 'removeEventSources'); – Chlebik

関連する問題