当我点击fullCalendar上的空时隙时,它会在该空单元格上绘制一个矩形。因此,如果我的slotDuration为30分钟,则该块代表30分钟。我也可以将光标拖到多个单元格上并选择自定义范围。但我需要做的是,当用户在单元格上单击(而不是拖动)时,选择并在2个单元格上绘制矩形(表示1小时)。这可能吗?我无法更改slotDuration。
如果我将snapDuration更改为1小时,它可以正常工作,但遗憾的是,我也无法更改它。
我正在寻找的是一种覆盖event.end
的方法,但这种方法不起作用。
更新1:
我能够做到这一点暴露cellDuration
属性:
on fullCalendar.js:
t.setCellDuration = function (minutes) {
var duration = moment.duration(minutes, 'minutes');
var view = t.getView();
view.timeGrid.cellDuration = duration;
}
现在在renderEvent
处理程序上,我可以调用
element.fullCalendar("setCellDuration", 60);
它有效,但是如果有一个替代方案不涉及更改fullCalendar代码,那就太好了。
答案 0 :(得分:0)
我认为你不能只修改日历的属性,但你可以修改fullCalendar.js文件。是的,我知道你在问题上指明了它,但我认为没有替代方案。
正好是listenStop
函数,它位于第4527 at version 2.3.3行
listenStop检查数组调用dates
dates[
{FCMoment}, //start
{FCMoment} //end
]
因此,在检查之前,您可以根据需要修改结束时间。另外,你必须渲染它。 在你的代码中,现在listenStop()函数应该是这样的:
listenStop: function(ev) {
if (dates) { // started and ended on a cell?
if (dates[0].isSame(dates[1])) {
dates[1] = dates[0].clone().add(1, 'hours'); //Now we modify the end
_this.renderSelection(dates[0], dates[1]); //And render the modified selection
view.trigger('dayClick', dayEl[0], start, ev);
}
if (isSelectable) {
// the selection will already have been rendered. just report it
view.reportSelection(start, end, ev);
}
}
}