Fullcalendar のすべてのイベントに ID を追加する必要があります。これはhttp://arshaw.com/fullcalendar/docs/event_data/Event_Object/で見つかりましたが、方法がわかりません。この ID は
すべてのイベントで一意です。イベントを Mysql データベースに保存します。ありがとう
8 に答える
解決策を見つけました!イベントを作成するときは、ここに一意の ID を入力してください:
var shift = calendar.fullCalendar('renderEvent',
{
id: shift_id,
title: current_name,
start: new Date(y, m, d + current_day, current_start_time_h, current_start_time_m),
end: new Date(y, m, d + current_day, current_end_time_h, current_end_time_m),
allDay: false
}, true // make the event "stick"
);
その後、このリスナーは DOM 構造に ID を追加します。
eventAfterRender:function( event, element, view ) {
$(element).attr("id","event_id_"+event._id);
},
フィールドですべてのイベントを取得するには:
console.log(calendar.fullCalendar('clientEvents'));
これでイベントの配列ができ、すべてのイベントが DOM 構造で番号付けされました!
OK、これが私の解決策です。まず、DB から最後の ID イベントを取得し、最後の ID に 1 を加えます
<?php
$sql = mysql_query("SELECT id FROM calendar ORDER BY id DESC LIMIT 1");
$resul = mysql_fetch_row($sql);
$idActual = $resul[0];
$idActual = $idActual + 1;
?>
次に、IDをJSに送信します
var idActual = "<?php echo $idActual ?>";
以上です。
Event オブジェクトの ID はオプション フィールドです。サーバー側スクリプトから返したいものは何でも返して使用できます。フィールドの組み合わせから複合 ID を作成できます...'calendarName_eventID' または単にデータベースの eventID を使用します。ただし、主キーをそのように公開するかどうかはわかりません (それ自体が別の問題です)。簡単に言えば、独自の ID 値を作成できます。
こちらをご覧ください: https://code.google.com/p/fullcalendar/issues/detail?id=713
スレッドはカレンダー イベントの削除を処理しますが、元の投稿者が保存イベントからのコールバックで ID を設定する方法を示しています。
お役に立てば幸いです。
次のようなパラメーターでパラメーター ID を設定することをお勧めします。
$('#calendar').fullCalendar({
id: 'calendar',
eventReceive: function(event) {
alert(this.calendar.options.id);
},
eventDrop: function(event) {
alert(this.calendar.options.id);
},
eventClick: function(event) {
alert(this.calendar.options.id);
},
eventRender: function(event) {
alert(this.calendar.options.id);
}
});