在 FullCalendar 中使用两个或多个单独的过滤器过滤事件

Filtering Events with Two or more separate filters in 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 return 语句有关,我通读了 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);
    },