0

我正在开发一个已经使用 fullcalendar 呈现日历的应用程序,每当页面刷新时,总是使用事件呈现回调以正确的颜色呈现时隙。它还使用事件单击回调正确更改单击事件时的时隙颜色。

这一切都很好,但是我正在尝试根据用户在日历完全加载所做的其他一些事情以编程方式操作时隙的渲染。在代码中,这就是我想要做的

var eventClick = function(calEvent, jsEvent, view) {
    // first we change the color of the event to indicate that it was clicked
    calEvent.backgroundColor = orangeColor;
    calEvent.textColor= darkGreyColor;
    calEvent.active=true;
    $(this).css('background', orangeColor).css('color', darkGreyColor);

    // i cache both the calEvent and the element to manipulate them later on
    cachedActiveEvents.push(calEvent);
    // here i'm storing this div: <div class="fc-event fc-event-vert ..>
    //                                <div class="fc-event-inner">
    //                                    <div class="fc-event-time">12:30 - 1:20</div>
    //                                    <div class="fc-event-title">event title</div>
    //                                    ..
    cachedActiveEventViews.push($($(jsEvent.target).parent().parent()));

    ..

单击后,程序会显示用户填写的模态表单。完成并关闭对话框后,单击的事件需要更改其颜色以反映状态的更改,这就是我调用此方法的地方:

function hideLessonPlan() {
    ..
    $.map(cachedActiveEvents, function(calEvent, eventIndex) {
        var element = cachedActiveEventViews[eventIndex];
        calEvent.backgroundColor = blackColor;
        calEvent.textColor = "white"
        element.css('background', blackColor).css('color','white');
    });
}

这根本行不通。使用 Chrome 开发工具断点,我确保该函数hideLessonPlan实际上与正确的变量对话。

经过进一步调查,我意识到在回调event render和回调中..在设置背景属性调用event click函数updateEvent(event) ..但是在我的情况下..在设置属性后不会调用此事件。所以我的问题更多的是:我如何才能从外部调用这个 upateEvent 方法?它似乎是一个私有变量。

更新:我让它工作,但只需存储所选 div 的 css 属性,然后使用 jquery 找到相同的 div 并在后面手动突出显示它。对这种 hacky 方式不太满意。希望有人能过来告诉我如何通过 fullcalendar 做到这一点。

4

1 回答 1

2

事实证明,我只需要更新 calendarEvent 的属性,即

calEvent.isActive = true; 
calEvent.status = 0; // ie in progress

然后调用更新事件

$('#calendar').fullCalendar('updateEvent',calEvent);

为我处理了所有的渲染

于 2014-04-04T08:07:13.273 回答