13

通常、これはカレンダーのイベントです。

            {

                title: 'Test',

                start: '2012-06-08',

                end: '2012-06-08',

                url: 'test/test'

            },

正常に動作します。カレンダーの毎週月曜日に表示されるイベントを1つ作成するにはどうすればよいですか?または、毎週火曜日などは、入力する平日/番号によって異なりますか?存在する場合のパラメータは何ですか?

それが存在しない場合、これを実現するための機能を何らかの方法で変更および追加できますか?したがって、repeatEveryWeekDay:2(月曜日)のようなパラメーターを入力すると、将来のすべての月曜日にデータがそこに表示されます。

http://arshaw.com/fullcalendar/docs/event_data/Event_Object/を調べてみましたが、何も見つかりません。

4

4 に答える 4

37

fullCalendarイベントの配列を渡す代わりに、たとえばサーバーからイベントをダウンロードしたり、それらのイベントを動的に生成したりする関数を渡すことができます。

ドキュメントのほとんどの例では、HTTPリクエストを使用してイベントデータを取得しています。ただし、コールバック関数は、希望どおりに機能するように十分な柔軟性を備えています。

私があなたのために書いた次の例を見てください。

$(document).ready(function() {

    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        editable: true,
        events: [
            // some original fullCalendar examples
            {
                title: 'All Day Event',
                start: new Date(y, m, 1)
            },
            {
                title: 'Long Event',
                start: new Date(y, m, d-5),
                end: new Date(y, m, d-2)
            },
            {
                id: 999,
                title: 'Repeating Event',
                start: new Date(y, m, d-3, 16, 0),
                allDay: false
            }
        ]
    });

    // adding a every monday and wednesday events:
    $('#calendar').fullCalendar( 'addEventSource',        
        function(start, end, callback) {
            // When requested, dynamically generate virtual
            // events for every monday and wednesday.
            var events = [];

            for (loop = start.getTime();
                 loop <= end.getTime();
                 loop = loop + (24 * 60 * 60 * 1000)) {

                var test_date = new Date(loop);

                if (test_date.is().monday()) {
                    // we're in Moday, create the event
                    events.push({
                        title: 'I hate mondays - Garfield',
                        start: test_date
                    });
                }

                if (test_date.is().wednesday()) {
                    // we're in Wednesday, create the Wednesday event
                    events.push({
                        title: 'It\'s the middle of the week!',
                        start: test_date
                    });
                }
            } // for loop

            // return events generated
            callback( events );
        }
    );
});

上記の関数は、2つの日付の間の毎週月曜日と水曜日のイベントを自動的に生成します。日付はstartとパラメータで示されendます。これらのパラメータは。によって渡されfullCallendarます。上記の関数によって生成されたイベントは、3番目のパラメーターfullCallendarの関数を介して返されcallbackます。

DateJSを使用して、特定の日付が月曜日かどうかをテストします。

更新:静的イベントや[複数の]繰り返し可能なイベントを混在させたい場合は、addEventSourceを使用できます。

于 2012-06-20T01:47:10.560 に答える
8

ChristopherRamírezの投稿を少し更新しました。fullCalendar atv2.2.3とmomentjsを使用v2.8.4するには、上記のスニペットの数行を修正して機能させる必要があります。

初め:

function(start, end, callback) {}

function(start, end, status, callback) {}

3番目のパラメーターはブール値であり、4番目はコールバック関数であるため

それで:

for (loop = start.getTime();
     loop <= end.getTime();
...

for (loop = start._d.getTime();
     loop <= end._d.getTime();

関数に渡される開始オブジェクトと終了オブジェクトはDateオブジェクトではなく、それらに対して.getTime()を呼び出すと、「未定義は関数ではありません」というエラーが発生するためです。

以上です!この修正は私のためにそれを機能させました。

于 2014-12-08T09:33:18.113 に答える
1

そのイベントの再現性を決定するのは、イベントオブジェクトのIDフィールドです。特定の曜日のすべての繰り返しイベントに同じIDを使用します。

于 2012-06-17T15:59:41.707 に答える
1

繰り返しイベントを解決するために私が見つけた最善の方法は、バックエンド言語へのJSON呼び出しを設定することです(私はDjango / Pythonを使用しています)。

したがって、カレンダーオプションでは次のようになります。

イベント:{url:'/ event-data'、キャッシュ:false}、

次に、バックエンドで、現在表示されているカレンダーの「start」および「end」URLGET変数に送信されるパラメーターを利用します。すなわち:

hxxp://example.com:8000 / event-data?start = 2014-09-28&end = 2014-11-09&_ = 1413553318353

Getリクエストはイベントオプションから送信されます。次に、データベース/ソースファイルからイベントを作成します。このファイルには、通常のカレンダーイベントとともに繰り返しイベントが一覧表示され、その日付範囲で発生するイベントのリストのみがJSONリストに返されます。

于 2014-10-17T13:44:36.997 に答える