FullCalendar http://fullcalendar.io/ を使用して、Webページにいくつかのイベントを表示しています。
カレンダーはこのように作成されます
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
allDayDefault: false,
selectable: true,
selectHelper: true,
editable: true,
eventLimit: true, // allow "more" link when too many events
});
イベントは、次のようなrenderEvent操作(jsonフィードではない)を介して作成されます
$('#calendar').fullCalendar('renderEvent', newEvent, 'stick');
newEventはこのように作成されます
newEvent = {
title : 'mytitle',
start : startDate,
allDay: false,
id: eventId,
description: 'my test event'
};
問題は、イベントが月ビューでは正しく表示されるが、週ビューまたは日ビューでは表示されないことです。
[〜#〜]更新[〜#〜]
私はこの日付形式を使用しています:2015-02-01T01:00:00
コードを再現するプランカー を作成しました。あなたのコードで私が見る唯一の問題は、イベントの作成で予想されるコンマです。
そこで、新しいモーメントオブジェクトを使用してイベントを作成します。これは今を意味します。
var startDate = moment();
var eventId = 123;
var newEvent = {
title : 'mytitle',
start : startDate,
allDay: false,
id: eventId, //Is this comma that was missing in your code
description: 'my test event'
};
そして、私はあなたがしているのと同じコードでそれを追加します:
$('#calendar').fullCalendar('renderEvent', newEvent, 'stick');
プランカーをチェックインできるので、すべてが正常に機能しているので、提供するコードで発生する可能性がある唯一の問題は次のとおりです。
eventId
変数が間違っていますstartDate
変数が間違っていますさらに、 render event のドキュメントを見ると、「stick」変数が適切に使用されていません。ブール値である必要があります。チェックインできるように バージョン2.3.1の9229行目 式として比較されるため、コードは機能しているため、任意の文字列(空ではない)がtrueになります。あなたはこの答えでこれについてもっと情報を持つことができます: https://stackoverflow.com/a/4923684/268616
したがって、3番目のパラメータスティックを次のように設定した場合:
...常にスティッキーとして解決され、stickySource
に追加されます。ただし、@ slicedtoadがコメントしているように、将来のバージョンで問題が発生しないように変更する必要があります。
コードに問題はありません。しかし、あなたは非標準的な方法でいくつかのことをしています。それらを修正してみてください。問題が解決する場合があります。
イベントの追加に使用している方法は適切ではありません。 FullCalendarの用語では、render
はカレンダーにデータを表示するプロセスを意味します。したがって、renderEvent
を実行すると、画面にイベントをdisplayするように指示するだけです。そして、stick
はそれを持続させます(一種)。
代わりに、 addEventSource
を使用する必要があります。任意のイベントソース(ローカルまたはリモート)を追加するために使用できます。また、eventSourceは、JSONフィードから1つのイベントのローカル配列まで何でもかまいません。
これは機能するはずです:
$('#calendar').fullCalendar('addEventSource',[{
title : 'mytitle',
start : startDate,
allDay: false,
id: eventId,
description: 'my test event'
}]);
それはあなたにセッション全体にわたって続くイベントを与えます。また、他のすべてのフルカレンダーオプションやコールバックとうまく連携できるという利点もあります。
私は fiddle を作成しましたが、私の側からいくつかの変更を加えてコードを使用しました。正常に動作しています。それがあなたのために働くことを願っています。ご意見をお待ちしております。
コード
[〜#〜] html [〜#〜]
<body>
<div id='calendar'></div>
</body>
[〜#〜]スクリプト[〜#〜]
<script type='text/javascript'>
$(document).ready(function(){
fullCalObj = $('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
allDayDefault: false,
selectable: true,
selectHelper: true,
editable: true,
eventLimit: true, // allow "more" link when too many events
});
var newEvent = {
title : 'mytitle',
start : '2015-04-22',
allDay: false,
id: 1,
description: 'my test event'
};
fullCalObj.fullCalendar('renderEvent', newEvent, 'stick');
});
</script>