2010-05-20 10 views
0

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

Вот snipit коды:

 
$(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 в качестве опции инициализации закомментированной. Если я так делаю, он работает нормально. Однако, если я пытаюсь установить его после инициализации, он не работает :(

ли какой-то другой способ сделать это? Или я застрял с того, чтобы установить поведение авансового?

+0

Это плагин, который вы пишете? Почему вы инициализируете fullCalendar дважды подряд? – Metropolis

+1

Он не инициализирует его дважды, а второй вызывает его настройку. Это типичный шаблон jquery. –

ответ

0

fullCalendar eventClick является callback method.Посмотрев код, я не думаю, что вы можете добавить этот параметр после инициализации календаря.Я даже попытался добавить функцию 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.

+0

Я ценю эту своевременную обратную связь. Я думал об этом (используя live и binding), однако я надеялся, что сможет назвать fullcalendar с аргументом «option», так как это отлично работает с другими плагинами (albiet более базовым). Я думаю, что способ, которым события связаны и запускаются с событиями fullcalendar, является тем, что мешает этому. Например, привязка к дочернему узлу (fc-event), а не самому полному календарю. Главный вопрос: было ли возможно настроить методы обратного вызова, такие как eventClick, динамически после того, как плагин уже был инициализирован. Спасибо за Ваш ответ. –

+0

Opps, я использовал 'event.url' вместо атрибута' href'. Кроме того, я знаю, что это то, что вы хотели, я просто не уверен, что это возможно. – Mottie

1

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

$(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 
} 
Смежные вопросы