根据其他ID参数过滤Fullcalendar事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据其他ID参数过滤Fullcalendar事件相关的知识,希望对你有一定的参考价值。

我正在使用jQuery库Fullcalendarmysql数据库中显示运动队的事件。我已设法正确设置JSON提要,显示数据库中的所有事件。

但是,教练可以管理多达三个团队,每个团队都有自己的日历页面。目前,所有活动都列在所有日历中。我需要某种过滤器来确保每个日历中只显示属于正确团队的事件。

我根据他们的ID给每个团队一个唯一的URL,就像这样。

http://localhost/master/index.php/team/56

JSON提要目前输出:

{"id":"14","event_id":"8","team":"56","start":"2013-12-16 18:00:00","title":"Mandagsgym","description":"Ivar er trenar","location":"Haukelandshallen","start_time":"18:00:00","end_time":"20:00:00"}

我目前的jQuery:

var filter_id = $('#filter_id').val(); //a variable with the team ID, 
                                       fetched from a hidden input field

$('#calendar').fullCalendar({
    firstDay:'1',
    defaultView: 'basicWeek',
    height: 400,
    editable: true,
    weekends: false,
    header: 
    {
        left: '',
        center: '',
        right: 'prev,next, month,basicWeek'
    },
    columnFormat: 'ddd d/M',
    allDayDefault: false,
    events: 
    {
        url: 'http://localhost/master/index.php/team/json'
    }
    });

在我看来,我有两个选择:1)找到一种方法将URL的第三段(团队ID)分配给JSON feed PHP函数,从而为日历提供动态JSON提要。

2)从URL中获取团队ID,将其分配给javascript变量,然后使用Fullcalendar方法进行一些过滤,从团队ID与URL中的团队ID不匹配的日历中删除或至少隐藏事件。

这些提议的方法都远远超出了我相对有限的知识。我个人喜欢接近nr.2。如果有人能提出解决方案,我会非常高兴,因为我已经坚持这个问题好几天了。

答案

我认为选项二是最简单的,但不一定是最好的。使用自定义事件功能按team_id过滤结果,然后将过滤后的结果传递给日历,如下所示:

events: function(start,end, callback) {
    $.getJSON('http://localhost/master/index.php/team/json', function(data){
        var eventsToShow = [];
        for(var i=0; i<data.length; i++){
            if(data[i].team == filter_id){
                eventsToShow.push(data[i]);
            }
        }
        callback(eventsToShow);
    });
}

在我使用fullcalendar时,我为事件使用自定义函数,但我的json feed也是动态的,因此我可以指定要为其获取事件的用户。这允许一个非常动态的日历。

以上是关于根据其他ID参数过滤Fullcalendar事件的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 FullCalendar V5 上的选择值过滤事件?

当对外部事件应用过滤器时,无法再拖动到fullcalendar

事件的ID(Fullcalendar)

在fullcalendar中添加新事件时如何获取资源ID

FullCalendar活动弹出按钮单击“不工作”

如何使用ajax更改事件对象后刷新fullcalendar v4