2013-11-20 77 views
0

我有一個fullcalendar,其中顯示從Google日曆或數據庫收集的不可編輯事件。然後,我想要註冊客戶對日曆中事件的請求。這有效,但我不能僅列出用戶添加的事件。 任何提示如何做到這一點? 我嘗試這樣做:如何在fullcalendar中過濾掉用戶創建的事件

function retrieve_events() { 

    var rdv=$('#calendar').fullCalendar('clientEvents', undefined); 
    for (i=0; i<=rdv.length-1; i++) { 
     /*alert(rdv.toSource());*/ 
     alert(rdv[i].title+" id: "+rdv[i].id+" start: "+rdv[i].start+" end:"+rdv[i].end+" heldag:"+rdv[i].allDay); 
    } 
} 

的「未定義」爲ID,這意味着我已經給所有的不可編輯的事件的ID,而新的沒有得到一個。但通過這種方式,我可以列出所有列出的事件,即使沒有身份證件。 null和''也是一樣。但使用硬編碼的ID號碼會返回該特定事件。

我從文檔中看到,似乎還有其他方法可以通過使用其他標準(如類)來獲得我需要的事件。但是我無法弄清楚如何指定這個過濾器。

回答

0

我還沒有與FullCalendar合作,但我也沒有打算廣泛測試這個,所以我不能保證這會工作。

但是,爲什麼不簡單測試rdv[i].id評估爲false?

嘗試:

function retrieve_events() { 
    var rdv = $('#calendar').fullCalendar('clientEvents'), 
     results = []; 
    for(var i = 0; i < rdv.length; ++i) { 
     if(!rdv[i].id) { 
      results.push(rdv[i]); 
     } 
    } 
    return results; 
} 

P.S:傳遞undefined.fullCalendar()可能是多餘的。這相當於只傳遞一個變量。我猜想第二個參數是可以篩選的事件類型,但只傳遞一個參數會導致插件返回所有事件。另請注意!!'' === false

內部檢查第二個參數是否設置可能與此類似:

$.fn.fullCalendar = function(command) { 
    switch(command) { 
     // ... some case's 
     case 'clientEvents': 
      var filter = arguments[1]; 
      if(!filter) { 
       // Retrieve ALL client events 
      } 
      else { 
       // Filter client events 
      } 
      break; 
     // ... some more case's 
    } 
}; 

這不比較類型。測試filter === false只會返回true,如果filter將評估爲false是一個布爾值。

以下是值爲false的示例。可能還有更多,但我相信這些都是。

  • undefined
  • null
  • 0
  • false
  • ''
+0

你的建議就像一個魅力! 不過,我想也許你對第二個參數的猜測是錯誤的,因爲參數是一個id或一個過濾器。該id適用於單個事件,而篩選器選項我無法弄清楚如何使用。如果有人能舉出一個例子,它肯定會非常有用。 – knottulf