添加源属性为从不显示的新事件



当我在传递给renderEvent的事件中指定source参数时,我在向fullCalendar添加事件时遇到问题-我做错了什么?

如果我指定source,则事件不会(永远(显示在日历上。。。看看fullcalendar.js v2.3.2的9348行,会不会是cache.push(events)被错误地放在了上面的if语句中?

(这里的场景是,当我添加新事件时,我希望它们成为特定源的一部分,而不是fullCalendar的内部"粘性"源(。

谢谢!

说明

不应指定源属性。来自事件对象文档:

source:事件源对象自动填充

对事件源的引用,该事件来自

我用非常基本的fullCalendar 2.3.2创建了一个plunker,当你可以检查源属性如何工作时,可以创建带有源的事件:

因此,如果你定义一个事件,比如:

{
    title : 'mytitle',
    start : moment(),
    allDay: false,
    id: 1,
    description: 'my event from source'
}

您可以在plunkr的控制台中检查事件是否接收到Source属性,该属性自动填充,内容如下:

event.source 
{
    events: Array[1], 
    className: Array[0], 
    origArray: Array[1]
}  

建议的解决方案

因此,为了您的目标,您应该将事件定义为数组中的项目来源:

   var mySource1 = [{
            title : 'Source 1',
            start : moment(),
            allDay: false,
            id: 1,
            description: 'my event 1'
        }];
    var mySource2 = [{
            title : 'Source 2',
            start : moment().add(1, 'days'),
            allDay: false,
            id: 2,
            description: 'my event from 2'
        }];

要将它们附加到日历上,您可以:

选项a

在您的日历中定义的不是您的事件,而是使用eventSources作为源数组的源:

$('#calendar').fullCalendar({
    (...)
    eventSources:[mySource1, mySource2],            
});

选项b

通过添加事件源方法添加源

.fullCalendar( 'addEventSource', mySourceN );

选项c

正在更新事件源:如果你想动态地将一个事件添加到一个特定的源中,唯一可以实现的方法就是删除并再次添加源:

所以类似于:

var myNewEvent: {
        title : 'mytitle',
        start : moment(),
        allDay: false,
        id: 1,
        description: 'my event from source'
    };
mySource.push(myNewEvent);
$('#myCalendar').fullCalendar( 'removeEventSource', mySource);
$('#myCalendar').fullCalendar( 'addEventSource', mySource);

老实说,我不喜欢这个C选项,但也许这正是你所需要的。这种情况有一个悬而未决的问题,Adam Shaw提出了解决方案。

相关内容

  • 没有找到相关文章

最新更新