如何在完整日历中筛选出用户创建的事件



我有一个完整的日历,其中显示从谷歌日历或数据库收集的不可编辑事件。然后我想注册客户对日历中事件的请求。这是有效的,但我不能只列出用户添加的事件。有关于如何做到这一点的提示吗?我试过这个:

function retrieve_events() {
    var rdv=$('#calendar').fullCalendar( 'clientEvents', undefined);
    for (i=0; i<=rdv.length-1; i++) {
        /*alert(rdv.toSource());*/
        alert(rdv[i].title+" id: "+rdv[i].id+" start: "+rdv[i].start+" end:"+rdv[i].end+" heldag:"+rdv[i].allDay);
    }
}

"未定义"为id,意味着我已经为所有不可编辑的事件提供了一个id,而新的事件没有。但通过这种方式,我可以列出所有事件,即使是没有id的事件。null和"也是如此。但是使用硬编码的id号会返回特定的事件。

我从文档中看到,似乎还有其他方法可以通过使用类等其他标准来获取我需要的事件。但是我不知道如何指定这个过滤器。

我还没有使用过FullCalendar,也不打算对此进行广泛的测试,所以我不能保证它会起作用。

然而,为什么不简单地测试rdv[i].id是否评估为false呢?

尝试:

function retrieve_events( ) {
    var rdv = $('#calendar').fullCalendar('clientEvents'),
        results = [];
    for( var i = 0; i < rdv.length; ++i ) {
        if( !rdv[i].id ) {
            results.push(rdv[i]);
        }
    }
    return results;
}

附言:将undefined传递给.fullCalendar()可能是多余的。这相当于只传递一个变量。我猜第二个参数是一种可以筛选的事件类型,但只传递一个参数会导致插件返回所有事件。另外,请注意!!'' === false

是否设置了第二个参数的内部检查可能类似于以下内容:

$.fn.fullCalendar = function( command ) {
    switch( command ) {
        // ... some case's
        case 'clientEvents':
            var filter = arguments[1];
            if( !filter ) {
                // Retrieve ALL client events
            }
            else {
                // Filter client events
            }
            break;
        // ... some more case's
    }
};

这不会比较类型。如果filter的值为false并且是布尔值,则测试filter === false只会返回true。

以下是评估为false的值的示例。可能还有更多,但我相信这些都是。

  • undefined
  • null
  • 0
  • false
  • ''

相关内容

  • 没有找到相关文章

最新更新