簡體   English   中英

全日歷:在周或天視圖中檢測點擊

[英]Fullcalendar: detect click in week or day view

我目前在月份視圖中檢測到雙擊事件。 這很好用:

dayRender: (date, element) => {
  element.bind('dblclick', ...)
}

我正在尋找的是一種在用戶處於日視圖或周視圖時執行相同操作的方法。 我希望能夠檢測到單擊事件,並獲取他們單擊的日期和時間(請注意,時間與日/周視圖有關,而與月視圖無關)。

有任何想法嗎?

對於將來會發現此問題的任何人,這是我想出的hacky解決方案:

因為fullcalendar不會在每個時隙中呈現<div> (例如,一個div代表在1/2/2015的1 pm-1:30pm),而是直觀地將單個時隙表示為行和列的交集,我們需要一種方法來確定給定點擊的時間。 天信息已經以data-date屬性的形式附加到每個列(天)DOM元素上。 我所做的是分叉了全日歷,並使用新的data-time屬性將時間信息添加到每行(時隙)。

然后,我偵聽了雙擊事件onViewRender,找出了用戶單擊的元素,並從中得出了日期和時間段:

viewRender: (view, element) ->

  if view.type in ['agendaDay', 'agendaWeek']
    element.on 'dblclick', (event) ->

      els = document
        .elementsFromPoint event.pageX, event.pageY
        .filter (e) -> (e.hasAttribute 'data-date') or (e.hasAttribute 'data-time')
      date = (_.find els, (e) -> e.hasAttribute 'data-date').getAttribute 'data-date'
      time = (_.find els, (e) -> e.hasAttribute 'data-time').getAttribute 'data-time'

      return unless date and time

      startTime = moment "#{ date } #{ time }"
      endTime = (moment startTime).add 30, 'minutes' # clone + increment

這是一個非常棘手的解決方案,並且混合了各種各樣的問題。 但是,在fullcalendar添加對timeClick事件的支持之前,這將非常有效。

希望這對別人有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM