fullcalendar: обновление функции обратного вызова функции после инициализации - PullRequest
0 голосов
/ 21 мая 2010

Хорошо, поэтому у меня проблема с настройкой опций, значения которых являются функциями обратного вызова при попытке установить их после инициализации плагина. Я думаю, что это было бы обычным поведением, чтобы динамически устанавливать обратный вызов события после запуска календаря.

Вот фрагмент кода:

 $(document).ready(function() {
  $('#calendar').fullCalendar({
   editable: false
   ,events:[{"title":"meeting.title","start":"2010-05-21 15:58:16 UTC"},{"title":"meeting.title","start":"2010-05-24 15:58:16", "url":"http://google.com"}]
 /*  ,eventClick: function(event) { 
              if (event.url) {
                  window.open(event.url);
                  return false;
              }
          }
   */
  });
 $('#calendar').fullCalendar('option', 'eventClick', function(event) {
          if (event.url) {
              window.open(event.url);
              return false;
          }
      });

});

Вы можете видеть, что установка функции eventClick как опция инициализации закомментирована. Если я делаю это таким образом, он работает нормально. Однако, если я попытаюсь установить его после инициализации, он не будет работать: (

Есть ли другой способ сделать это? Или я застрял с необходимостью установить поведение заранее?

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Очевидно, я уверен, что вы уже работали над этой проблемой, но для всех, кто может столкнуться с этой проблемой, вот как я обошел ее.

 $(document).ready(function() {
  $('#calendar').fullCalendar({
   editable: false
   ,events:[{"title":"meeting.title","start":"2010-05-21 15:58:16 UTC"},{"title":"meeting.title","start":"2010-05-24 15:58:16", "url":"http://google.com"}]
   ,eventClick: function(event) {eventClickCustom(event)}
  });

var eventClickCustom = function(event)
{
    //do what you want here, you can can update this function all you want.
}

//then later
var eventClickCustom = function(event)
{
   //updated version of the function
}
0 голосов
/ 21 мая 2010

fullCalendar eventClick - это метод обратного вызова . Просматривая код, я не думаю, что вы сможете добавить эту опцию после инициализации календаря. Я даже попытался добавить функцию eventClick к данным календаря (где он хранит публичные функции). Таким образом, единственная альтернатива, о которой я могу подумать, - это добавить собственный обработчик событий. Вы можете попробовать это:

$('#calendar').find('.fc-event,.ui-event').find('a[href]').live('click', function(){
 window.open( $(this).attr('href') );
 return false;
})

Да, и причина, по которой я нацеливаюсь на классы .fc-event и .ui-event, заключается в том, что она меняется в зависимости от того, используется ли опция theme.

...