2013-11-20 2 views
0

У меня есть полный календар, где отображаются нередактируемые события, которые собираются из календаря Google или из базы данных. Затем я хочу зарегистрировать запросы клиентов для событий из календаря. Это работает, но я не могу перечислить только те события, которые добавлены пользователем. Любой намек на то, как это сделать? Я попытался это:Как отфильтровать созданные пользователем события в fullcalendar

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); 
    } 
} 

года как «неопределенный» в качестве идентификатора, означает, что я дал все нередактируемые события идентификатор, а новые еще не получили один. Но таким образом я перечисляю все перечисленные события, даже те, у кого нет идентификатора. То же самое происходит с null и ''. Но использование hardcoded id-numbers возвращает это конкретное событие.

Из документации я вижу, что, похоже, существуют другие способы получить необходимые мне события, используя другие критерии, такие как классы. Однако я не могу понять, как указать этот фильтр.

ответ

0

Я еще не работал с FullCalendar, но не намерен интенсивно проверять это, поэтому я не могу гарантировать, что это сработает.

Однако почему бы вам не просто проверить, соответствует ли rdv[i].id false?

Try:

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; 
} 

P.S .: Передача 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 вернет true, если filter будет оцениваться до falseи является логическим.

Ниже приведены примеры значений, которые оцениваются до false. Их может быть больше, но я считаю, что это все.

  • undefined
  • null
  • 0
  • false
  • ''
+0

Ваше предложение работает как шарм! Тем не менее, я думаю, возможно, ваше предположение о втором аргументе ошибочно, поскольку аргумент является либо идентификатором, либо фильтром. Идентификатор работает в отдельных событиях, а параметр фильтра я не могу понять, как использовать. Это было бы очень полезно, если бы кто-то мог привести пример. – knottulf

Смежные вопросы