javascript - 在 FullCalendar 中使用两个或多个单独的过滤器过滤事件
问题描述
我在 fullCalendar 中有一个由某些用户和不同客户提供的事件列表。我想按用户和客户端进行过滤,这样当单击一个用户时,只会显示他的事件。当单击该用户时,我单击了一个客户端,只有该客户端和用户的事件才会显示在日历上。
https://codepen.io/anon/pen/Owmqwe?page=1&
在我的示例中,当我单击 Jack 和 Petco 时,应该只显示 Jack 的 Petco 客户端事件。但问题是,当我点击 Jack 然后 Petco 时,所有 petco 事件都会显示出来。当我单击 Petsmart 然后单击 Jack 时,反之亦然。Jacks Petco 事件出现时,只有 Jack 的 petsmart 事件应该出现。
我相信问题出在 JS 的第 96 行,它与我不知道如何解决的 eventRender 返回语句有关,我阅读了 JQUERY 文档,但我仍然缺乏经验。
eventRender: function(event, element, view) {
return $('input[type=radio][name=user_selector]:checked').val() === 'all' && $('input[type=radio][name=type_selector]:checked').val() === 'all'
|| event.client.indexOf($("input[type=radio][name=type_selector]:checked").val()) >= 0
|| event.user.indexOf($("input[type=radio][name=user_selector]:checked").val()) >= 0;
另一件事:我可以通过事件源数组过滤用户。但问题是:虽然我的示例是一个静态数组,但实际上我是动态地从数据库获取事件。这意味着我将无法过滤有新用户的事件,我将不得不不断手动更新代码。所以,除非有我想不出的解决方法,否则这对我不起作用。
解决方案
&&
和的错误使用||
。我相信你想要这样的东西:
eventRender: function(event, element, view) {
return ($('input[type=radio][name=user_selector]:checked').val() === 'all' || event.user.indexOf($("input[type=radio][name=user_selector]:checked").val()) >= 0)
&& ($('input[type=radio][name=type_selector]:checked').val() === 'all' || event.client.indexOf($("input[type=radio][name=type_selector]:checked").val()) >= 0);
},