2012-02-20 107 views
3

我想創建一個函數來生成我的事件。事件源FullCalendar

在fullCalendar的文檔,我找到的東西:

{ 
    events: function(start, end, callback) { 
     // ... 
    }, 
    color: 'yellow', // an option! 
    textColor: 'black' // an option! 
} 

{ 
    events: function() { 
     // ... 
     for (var k=0; k<myarray.length; k++) 
     { 
      title: myarray[0][0], 
      start: myarray[0][1] 
     } 
    }, 
    color: 'yellow', // an option! 
    textColor: 'black' // an option! 
} 

誰意思起點,終點和回調?

我希望當我加載日曆啓動功能...

我想要做的事,如第二個例子...... 我該怎麼辦?

非常感謝

+4

閱讀文檔? – 2012-02-20 12:55:17

+0

events:function(){// .. for(var i = 0; i Bellu 2012-02-20 15:06:38

回答

5

正如documentation解釋,在events屬性,指定爲功能,將fullCalendar時,它需要新的事件數據被調用。它將傳遞兩個日期,這兩個日期表示日曆上當前所查看片段的開始和結束日期。給定的第三個參數是一個回調函數,當您爲自定義函數生成了給定時間範圍內的數據時應該調用它,並將生成的事件數據傳遞給它。

日曆第一次加載時,無論當前顯示哪個視圖,都需要數據。例如,如果它在當前日期的月份視圖中,則start將是當前月份的第一天,並且end將是當前月份的最後一天。你的函數應該產生一個事件數據數組(在documentation中指定的格式)該時間範圍並將其傳遞給參數3給出的回叫函數。

如果日曆當前處於月視圖中,並且顯示2010年10月,用戶點擊右邊的按鈕告訴日曆前進到下個月,你的函數將被調用,開始參數爲2010年11月1日,結束參數爲2010年11月30日。您將爲此生成事件數據時間段並將其傳遞給回調參數。

根據你給出的例子(它有極端的JS語法問題),我想說你不希望使用events作爲一個函數。相反,您的代碼應在之前產生一個properly formatted event data array,然後調用.fullCalendar(),並將該數組作爲events屬性。例如:

/* Assuming you have an array, myArray, which holds data about 
* your events, but is not in the format axpected by fullCalendar 
*/ 

var formattedEventData = [], 
    k; 

for (var k = 0; k < myArray.length; k += 1) { 
    formattedEventData.push({ 
     title: myarray[k][0], 
     start: myarray[k][1] 
    }); 
} 

$('#targetElement').fullCalendar({ 
    events: formattedEventData, 
    color: 'yellow', 
    textColor: 'black' 
}); 
+0

謝謝你幫助我!這是一個絕妙的解決方案! – Bellu 2012-02-20 16:23:04

+0

沒問題。贊成票和答覆接受。 ;) – JAAulde 2012-02-20 16:27:58

0

我做了同樣的事情,JAAulde說,但在asp.net中的模型,它運作良好。這裏是代碼,如果有人需要它:

$(document).ready(function() { 
    var formattedEventData = []; 

    @foreach (var item in Model){ 
      <text> 
      formattedEventData.push({ 
      title: '@(item.name)', 
      description: '@(item.description)', 
      start:'@(item.startTimeHTML)', 
      end: '@(item.endTimeHTML)', 
      description: '@(item.description)' 
      }); 
      </text> 
     } 

    var calendar = $('#calendar').fullCalendar({    
     events: formattedEventData 
     }); 
});