FullCalendar (FC) に問題があり、プラグイン Scheduler (S) です。
数か月前から、バージョン 1.2.0 (S) と 2.6.0 (FC) を併用しています。
それは問題ありませんが、ユーザーからの新しい要求 (リソースのグループ化を有効/無効にする) は、「オプションを動的に取得/設定する」機能を使用して大いに満足するでしょう。そこで、ライブラリの新しいバージョン 1.4.0 (S) と 3.0.1 (FC) をダウンロードしました。
ここで問題が発生します。通常のスケジューラの日ビューでは、うまく機能します。しかし、週単位のビューを使用している新しいページを開くと、データが表示されません。
私はすべてを試しました:
- 1.3.2 (S) で 2.7.3 (FC) を使用してバージョンを変更しました。
- (FC) のバージョンを (S) と一緒に zip で使用しました。
- いくつかの変更を行ったので、それらを削除しましたが、問題はライブラリが連携して動作する方法にあるようです。
コードをいくつか投稿しますが、少し複雑です... スケジューラは「クラス」内にカプセル化され、イベントを使用してアクティブ化されます。インフラストラクチャ全体は一種のフレームワークの一部であり、単純にコードの一部を取り上げることはできません。私が確信しているのは、全体が古いバージョンでは機能するが、新しいバージョンではうまくいかないということです.
現在のところ、唯一有効な解決策は、各ページに 1 つずつ、2 つのバージョンを使用することです。しかし、もちろん、これは一種のハックであり、良くもなく、メンテナンスにも適していません。
スケジューラを生成するために使用されるコードを次に示します。_schedulerType
毎日または毎週のビューをクレートするために使用されます。2 つの「コンテナ」は外部で作成され、スケジューラの作成方法を定義するために使用されます_schedulerOptions
。_schedulerServices
_schedulerContainer.fullCalendar({
local (or lang): _schedulerOptions.language,
allDaySlot: false,
now: _currentDay,
selectable: true,
editable: false,
aspectRatio: _schedulerOptions.aspectRatio,
scrollTime: '07:30',
slotDuration: '00:15:00',
slotLabelInterval: '01:00:00',
slotLabelFormat: _schedulerOptions.slotLabelFormat,
slotWidth: _schedulerOptions.slotWidth,
nowIndicator: true,
customButtons: (_schedulerServices.schedulerHeader !== null) ?
_schedulerServices.schedulerHeader.createCustomButtons() :
null,
header: (_schedulerServices.schedulerHeader !== null) ?
_schedulerServices.schedulerHeader.createHeader() :
false,
defaultView: _schedulerType,
-------------------REMOVE-----------------------------------------
resourceLabelText: 'Rooms',
resourceGroupField: _defaultOptions.groupBy,
resourceOrder: _defaultOptions.orderBy,
resources:
function (callback) {
if (_schedulerServices.rscCallback !== null) {
if (log) {
console.log("reload resources inside scheduler");
}
callback(_schedulerServices.rscCallback.getResources());
}
},
------------------------------------------------------------------
events:
function (start, end, timezone, callback) {
if (_schedulerServices.evtCallback !== null) {
if (log) {
console.log("reload events inside scheduler");
}
callback(_schedulerServices.evtCallback.getEvents());
}
},
-------------------REMOVE-----------------------------------------
resourceRender:
function (resourceObj, element) {
if (_schedulerServices.rscViewManager !== null) {
return _schedulerServices.rscViewManager.requestRender(resourceObj, element);
}
},
------------------------------------------------------------------
eventRender:
function (eventObj, element) {
if (_schedulerServices.evtViewManager !== null) {
return _schedulerServices.evtViewManager.requestRender(eventObj, element);
}
}
});
どんな助けでも大歓迎です!ありがとう
解決しました!!!
バージョン 2.6.0 以降、オプションの未使用のオプション フィールドは使用しないでください。私の場合、リソースに関連するすべてのフィールドを削除すると問題が解決しました。