【发布时间】:2013-05-30 22:47:46
【问题描述】:
我无法理解如何使用 isDisabledDate 属性禁用除少数日期之外的所有日期。
情况:
我正在使用 Dijit 日历小部件作为允许控制远程调度程序的 Web 应用程序的一部分。
基本上,当用户请求时,会从服务器检索作业列表。如果在特定日期安排了作业,则应启用该日期(否则默认禁用)。
直观地说,在伪代码中,我想做这样的事情:
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;
}
});
但这有两个问题:
compareDate 不起作用,因为我需要 AMD 模块同样的事情在我的代码中的其他地方也有效,但当它被 dijit 小部件调用时却无效?
除了日历视图更改之外,如何在数据更改时运行逻辑?
【问题讨论】:
标签: javascript date calendar dojo