1

isDisabledDate プロパティを使用して、いくつかの日付を除くすべての日付を無効にする方法がわかりません。

状況:

リモート スケジューラを制御できる Web アプリの一部として、Dijit カレンダー ウィジェットを使用しています。

基本的に、ユーザーが要求すると、ジョブのリストがサーバーから取得されます。特定の特定の日付にスケジュールされたジョブがある場合は、その日付を有効にする必要があります (それ以外の場合はデフォルトで無効になっています)。

直感的に、疑似コードでは、次のようなことをしたいと思います。

function onGetJobsComplete(jobs){ 
    foreach(job in jobs) {
         dijit.byId('MyCalender').enableDate(job.date);
    }
}

最終結果は、ユーザーがどの日に仕事があるかをグラフィカルに確認し、これらの日をクリックして追加情報を取得できるようにすることです (この部分は私が取り組んでいます)。

私が見つけることができるすべての例は、外部の変化するデータに依存しない基準に基づいて日付を除外することを扱っているようです (つまり、すべての週末など)。

編集:

私はこれを試みました:

     <div id="calSJobs" data-dojo-type="dijit/Calendar" data-dojo-props="
                dayWidth:'abbr',
                isDisabledDate: disabledDates"
                />

-

function disabledDates(value){
    if(typeof dataJobs == 'undefined')
        return true;
    try {   
    for(i=0; i<dataJobs.length; i++) {
        if(dataJobs[i].cron == 'False')
        {
                jobDate = new Date(dataJobs[i].time);
                calDate = value;
                if(compareDate(jobDate, calDate)
                    return false;
        }
    }
    } catch (err) {log(err.message);}
    return true;
}

var compareDate;
require(["dojo/date"], function(date){

compareDate = function (date1, date2) {
    if(date.compare(date1, date2, 'date') == 0)
        return true;
    else
        return false;
}

});

しかし、これには 2 つの問題があります。

  • AMD モジュールが必要なので、compareDate が機能しない これと同じ種類のことがコードの他の場所で機能しますが、dijit ウィジェットによって呼び出されたときは機能しませんか?

  • カレンダー ビューが変更されたときだけでなく、データが変更されたときにロジックを実行するにはどうすればよいですか?

4

1 に答える 1

1

以下のようにカレンダーを作成すると、有効な日付と無効な日付のロジックを追加できます

 new Calendar({
        value: new Date(),
        isDisabledDate: lang.hitch(this, function(d){
            return true;
        })
    }, "mycal"); 

これにより、すべての日付が無効になります。または、それらのいくつかを有効にしたい場合は、関数にロジックを追加して、その日付がリストにある場合に false を返すことができます。

ところで、すべての日付をインラインで無効にする場合は、次のようにします。

<div data-dojo-type="dijit.Calendar" value="20120512" data-dojo-props="isDisabledDate:function(){return true; }"></div>
于 2013-05-31T06:02:52.867 に答える