JQuery UI диалог - обработчики событий нажатия кнопки - PullRequest
0 голосов
/ 03 февраля 2010

Я JS Noob. Я использую плагин jquery FullCalendar, который предоставляет событие eventClick (calEvent, jsEvent, view), которое вызывается при нажатии на событие в календаре. В моем обработчике событий я хочу открыть диалоговое окно с вопросом, хочет ли пользователь редактировать только одно вхождение повторяющегося события или всего события. Проблема заключается в том, что обработчики нажатий кнопок для диалогового окна THAT должны иметь доступ к переменной calEvent, но я должен создать экземпляр диалога внутри $ (document) .ready, но за пределами функции eventClick.

Вот мой код:

$(document).ready(function() {
  $('#calendar').fullCalendar({
    events: getEvents,
    header: {
      left: 'title',
      center: 'prev,next',
      right: 'today month agendaWeek agendaDay'
    },
    theme: true,
    eventClick: function(calEvent, jsEvent, view) {
      if(calEvent.readOnly == true) {
        return;
      }
      if(calEvent.recurring) {
        if(calEvent.persisted) {
          editOccurrence(calEvent);
        } else {
          $("#edit_type_dialog").dialog("open");
        }
      } else {
        editEvent(calEvent);
      }
    }
  });

  $("#edit_type_dialog").dialog({
    modal:true,
    autoOpen: false,
    buttons: {
      All:function() {
        $(this).dialog("close");
        editEvent(calEvent);
      },
      This:function() {
        $(this).dialog("close");
        editOccurrence(calEvent);
      },
      Cancel:function() {
        $(this).dialog("close");
      }
    }
  });

  function getEvents(start, end, callback) {
    //get some events
  }

  function editEvent(calEvent) {
    alert("event edited");
  }

  function editOccurrence(calEvent) {
    alert("occurrence edited"); 
  }
});

Итак, вопрос сводится к следующему: как передать calEvent обработчикам событий нажатия кнопки в edit_type_dialog из функции eventClick?

1 Ответ

0 голосов
/ 04 февраля 2010

Вот что я сделал (не уверен, рекомендуется ли это, но работает):

1) Переместите экземпляр диалога в метод eventClick, предоставив ему доступ к переменной calEvent. 2) За пределами экземпляра fullCalendar, но все еще в пределах $ (document) .ready () я добавил $ ("# edit_type_dialog"). Hide ()

...