1

レンダリング時に月ビューの各セルにカスタム html テーブルを挿入しようとしています。これを行うには、ajax を使用してサービスを呼び出します。このサービスは、セルに入力した html テーブルを返します。

これを行うために、fullcalender.js に次のコードを入力しました

bodyCells.each(function (i, _cell) {
                cell = $(_cell);
                date = indexDate(i);
                if (date.getMonth() == month) {
                    cell.removeClass('fc-other-month');
                } else {
                    cell.addClass('fc-other-month');
                }
                if (+date == +today) {
                    cell.addClass(tm + '-state-highlight fc-today');
                } else {
                    cell.removeClass(tm + '-state-highlight fc-today');
                }
                cell.find('div.fc-day-number').text(date.getDate());

                //Paras Change
                $(CallService(date)).appendTo(cell.find('div.fc-day-content').empty());

                if (dowDirty) {
                    setDayID(cell, date);
                }


            });

関数「bodyCells.each」で。ここで、CallService は、サービスを呼び出す関数への呼び出しです。

サービスへの私の呼び出しは、別の javascript ファイル fullcalenderDataHelp.js にあります。コードは次のとおりです。

function CallService(date) {
    var table = null;
    var newDate = (date.getMonth() + 1) + '/' + (date.getDate()) + '/'+date.getFullYear();
    $.ajax({
        type: "POST",
        url: "http://localhost:57747/ScheduleServer.svc/GetScheduleByDay",
        data: '{"day":"' + newDate + '"}',
        timeout: 7000,
        contentType: "application/json",
        success: function (response, textStatus, jqXHR) {
            table = $.parseJSON(response.d)
        }
    })

   //alert(table);   
   return table;

}

html テーブルがハードコードされている場合は機能しますが、実際の ajax 呼び出しを行って html テーブルを表示しようとすると、機能しないようです。ajax呼び出しの方が時間がかかると思います。

これについて何か助けていただければ幸いです。

ありがとう、パラス

4

1 に答える 1

0

これが古い投稿であることは知っています。カレンダー プラグイン自体は、私が質問してプロジェクトで使用して以来、長い道のりを歩んできました。これは、バージョン 1.5.4 に関連しています。現在のバージョンでこれを引き続き使用できるかどうかはわかりません。以下のプランクにオリジナルの fullcalender.js があります。

私の最初の質問は、月ビューの各セルにカスタム HTML を追加する方法に関するものでした。

質問を投稿してから数日でこれに対する答えを見つけましたが、その時点ではここに投稿する常識がありませんでした. 私はいつも、それに答えるかもしれない専門家からそれを行うためのより良い方法を得るかもしれないと思っていました.

その日は来なかった。今日、Web サイトにアクセスして、これが後のバージョンに含まれている機能かどうかを確認しようとしましたが、関連するものは見つかりませんでした。

答えはかなり些細なことであることが判明しました。bodyCells.each の関数内に、次のようなコード行を追加しました。

$(CallService(date)).appendTo(cell.find('div.fc-day-content').empty());

CallService(date)引数として渡された日付を含むセルに追加される html を返す関数です。

これが動作中のplunkerです。

ただし、留意すべき点が 1 つあります。この関数は、月ビューのすべてのセルが読み込まれる前に呼び出されます。つまり、この関数呼び出しによって遅延が発生します。

基本的なフルカレンダーの月ビューでカスタム HTML が必要な人に役立つことを願っています。

于 2016-05-26T15:16:22.157 に答える