在FullCalendar中将数据传递给后台事件对象

时间:2015-08-14 11:48:13

标签: jquery angularjs jquery-plugins fullcalendar

当用户点击后台事件时,有没有办法获取我传递给eventObj的数据? 我的示例背景事件如下所示:

{
 id: 'availableForMeeting',
 title: 'Test Background Event #1',
 start: '2015-08-13T07:30:00',
 end: '2015-08-13T12:30:00',
 rendering: 'background',
 sampleId: 214,
 color: 'red'
}

但我无法获取sampleId字段,因为它在jsEvent中不存在。

2 个答案:

答案 0 :(得分:2)

首先,为了在背景事件上实际获得点击处理程序,您必须使用委派的jquery .on(),因为FullCalendar' s eventClick不适用于后台事件

$("#calendar").on("click",".fc-bgevent",function(event){
    console.log($(this).data());
});

只需这样,您将获得一个空的控制台日志。我们需要将事件数据添加到event元素中。我们可以在eventRender

中执行此操作
eventRender: function(event,element,view){
    $(element).data(event);
},

工作JSFiddle

答案 1 :(得分:0)

由于多个问题(z-indexheight)我无法触发点击,因此接受的答案对我没有用。我想我找到了一个更清洁的解决方案。

解决方案是使用fullcalendar clientEvents方法。它将使用events的客户端副本。所以没有额外的api电话。

选择日期时,selectdayClick都会被触发。因此,请选择最适合您需求的产品。我认为select是一个不错的选择,因为如果需要的话,它会在多天的选择中被解雇。

    select: function (startDate, endDate, jsEvent, view, resource) {

       //below code for passing events in bg events of fullcalender
                          var events = $('#calendar').fullCalendar('clientEvents', function (evt) {
                        //if same date as clicked date add element to events array
                          return evt.start.isSame(startDate);//must return boolean
                    });



                    console.log(events);
}

希望这有助于某人。