2014-12-03 77 views
0

當我點擊fullCalendar上的空白時間段時,它會在該空白單元格上繪製一個矩形。所以,如果我的slotDuration是30分鐘,那麼代表30分鐘。我也可以將光標拖到多個單元格上並選擇一個自定義範圍。但我需要做的是,當用戶單擊(而不是拖動)單元格時,選擇並繪製2個單元格的矩形(代表1小時)。這可能嗎?我無法更改slotDuration。 如果我將snapDuration更改爲1小時,它可以工作,但不幸的是,我也無法更改它。 我正在尋找的是一種重寫event.end的方法,但這並不奏效。單擊時選擇多個時間段

更新1:
我能夠做到這一點暴露cellDuration屬性:

上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

@downvoter:我怎樣才能改善這個問題? – Leo 2014-12-03 21:10:18

回答

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); 
       } 
      } 
     }