如何使fullcalendar只获得当前月份事件?

时间:2014-03-24 13:13:41

标签: fullcalendar

我使用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'
        }
    })

任何帮助将不胜感激,

由于 海梅

2 个答案:

答案 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。

更好的解决方案是更改默认的startend参数。您可以使用以下内容实现:



{
  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?