2013-02-21 29 views
1

我試圖用Jquery Fullcalendar製作一個動態日曆,如果它們在月,周或日視圖上顯示事件的不同標題。我',嘗試與addEventSource和removeEventSource,但我不能讓事件得到渲染。這是我的代碼:如何使用FullCalendar與addEventSource

<script type='text/javascript'> 

$(document).ready(function() { 

    var date = new Date(); 
    var d = date.getDate(); 
    var m = date.getMonth(); 
    var y = date.getFullYear(); 


daySource = new Object();  
daySource.title = 'MONTH'; // this should be string 
daySource.start = new Date(y, m, d); // this should be date object 
daySource.end = new Date(y, m, d); 

var day =new Array(); 
day[0]= daySource; 

monthSource = new Object();  
monthSource.title = 'MONTH'; // this should be string 
monthSource.start = new Date(y, m, d); // this should be date object 
monthSource.end = new Date(y, m, d); 

var month =new Array(); 
month[0]= monthSource; 

$('#calendar').fullCalendar({ 
      header: { 
       left: 'prev,next today', 
       center: 'title', 
       right: 'month,agendaWeek,agendaDay' 
      }, 
      columnFormat: { 
       month: 'ddd', 
       week: 'ddd d/M', 
       day: 'dddd d/M' 
      },   
      defaultView: 'agendaDay',  






     viewDisplay: function(view) { 
      if (lastView == undefined) { lastView = 'firstRun'; } 

      if (view.name != lastView) { 

      if (view.name == 'agendaWeek') { 
       $('#calendar').fullCalendar('addEventSource', month); 
       $('#calendar').fullCalendar('removeEventSource', day); 
       $('#calendar').fullCalendar('removeEventSource', day); 
       $('#calendar').fullCalendar('renderEvents'); 
      } 
      if (view.name == 'agendaDay') { 
       $('#calendar').fullCalendar('addEventSource', day); 
       $('#calendar').fullCalendar('removeEventSource', month); 
       $('#calendar').fullCalendar('removeEventSource', month); 
       $('#calendar').fullCalendar('renderEvents'); 
      } 

      if (view.name == 'month') { 
       $('#calendar').fullCalendar('addEventSource', month); 
       $('#calendar').fullCalendar('removeEventSource', day); 
       $('#calendar').fullCalendar('removeEventSource', day); 
       $('#calendar').fullCalendar('renderEvents'); 
      } 
      lastView = view.name; 
      } 
     }, 

     timeFormat: { // for event elements 
      agendaDay: '', 
      agendaWeek: '', 
      month: '', 
      '': 'h(:mm)t' // default 
     },   

    }); $('#calendar').fullCalendar('addEventSource', month);  $('#calendar').fullCalendar('rerenderEvents'); 
}); 

第一我不知道爲什麼avents犯規渲染,然後如果標題將根據視圖改變。我會感謝任何幫助。

+0

的eventSources需要是數組,而不僅僅是事件對象。在數組中封裝你的對象,看看是否有效。 – ganeshk 2013-02-21 19:04:29

+0

我更新了代碼,但仍然沒有在日曆上顯示任何事件 – 2013-02-21 20:12:06

+0

適用於我 - http://jsfiddle.net/100thGear/CBPW8/1/ – ganeshk 2013-02-21 22:04:38

回答

2

eventSources需要是數組,而不僅僅是事件對象。在數組中封裝你的對象,看看是否有效。

檢查這個搗鼓演示 - jsfiddle.net/100thGear/CBPW8/1

+0

謝謝,但代碼仍然有問題。當您在月份和周視圖之間切換時,它會複製標題爲「MONTH」的事件 – 2013-02-22 00:32:48

+0

是的,因爲您要添加MONTH兩次。一旦進入'agendaWeek'塊,再次進入'月'塊。在添加任何內容之前,從「月份」塊中移除月份和日期來源。 – ganeshk 2013-02-22 03:13:58

+0

我是這麼做的,因爲我在另一篇文章中讀到過,有些人是這麼做的,而且對他有用。我做了你告訴我的改變,並且工作,謝謝。 – 2013-02-22 03:44:49