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