我使用fullcalendar插件通过Ajax获取并显示一个月的假期。我遇到的问题是,检索假期的方法只接受一年和一个月作为参数,而不是日期范围。
使用fullcalendar的月视图时,start和end参数的范围从2月23日到4月6日。我需要它从3月1日到3月31日。这样,我只能得到年份和月份来调用该方法。
这是我尝试的但没有成功:
$('#calendar').fullCalendar({
monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],
events: '/get_month_holidays',
start: {
month: new Date((new Date()).getFullYear(), (new Date()).getMonth(), 1)
},
end: {
month: (new Date((new Date()).getFullYear(), (new Date()).getMonth() + 1, 1)) - 1
},
buttonText: {
today: 'hoy'
}
})
任何帮助将不胜感激,
由于 海梅
答案 0 :(得分:9)
最后我使用了:
eventSources: [
{
url: '/get_month_holidays',
type: 'POST',
data: function() {
var fecha = $('#calendar').fullCalendar('getDate');
return {
month: fecha.getMonth() + 1,
year: fecha.getFullYear()
}
}
}
],
它有效。不管怎么说,还是要谢谢你。 海梅
答案 1 :(得分:2)
jstuardo的解决方案为请求添加了新参数,因此您最终会得到以下内容:
http://your.api.com/events?month=8&year=2015&start=2015-07-27&end=2015-09-07
这非常令人困惑,需要您相应地更改API。
更好的解决方案是更改默认的start
和end
参数。您可以使用以下内容实现:
{
url: baseUrl + '/events',
startParam: null, //resetting default fullcalendar parameter
endParam: null, //resetting default fullcalendar parameter
data: function() {
var date = $('#gc-calendar').fullCalendar('getDate')._d;
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
firstDay = $filter('date')(firstDay, 'yyyy-MM-dd');
lastDay = $filter('date')(lastDay, 'yyyy-MM-dd');
//AngularJS way of changing the date format to yyyy-mm-dd
return {
start: firstDay,
end: lastDay
}
}
}

这样您的请求如下所示:
http://your.api.com/calendar_orders?start=2015-08-01&end=2015-08-31
您可以将日期格式化为' yyy-MM-dd'使用你喜欢的任何方法。你可以在这里找到一堆: Get String in YYYYMMDD format from JS date object?