2017-01-13 2 views
1

У меня есть полный календаря на моей веб-странице. Календарь имеет события. On dayClick обработчик события Я вызываю функцию.FullCalendar dayClick js событие не отделяется

Проблема 1-й раз при щелчке по дневному ящику функция вызывается 1 раз. 2-й раз функция получает вызов 2 раза, 3 раза 3 раза ... и так далее.

Я могу догадаться, что проблема с событием дня не отделяется. Но я не могу его решить.

Код:

$('#calendar').fullCalendar({ 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    eventLimit: true, 
    defaultView: 'month', 
    editable: false, 
    eventClick: function (event) { 
     if (event.url) { 
      window.open(baseUrl + event.url); 
      return false; 
     } 
    }, 
    dayClick: function (date, allDay, jsEvent, view) { 
     var dateString = ''; 
     dateString = moment(date, 'YYYY-MM-DD').format().split('T')[0]; 
     $('#popup').modal('toggle'); 
     $('#popup').on('shown.bs.modal', function() { 
     AsyncFn().done(function (result) { 
      AnotherAsyncFn(function() { 
       SomeFunction(); //This function gets called multiple times           
       }); 
      });     
     });       
    } 
}); 

Я не знаю, как снять это событие. Может быть, с помощью off или unbind, но точно не знаю. Может ли кто-нибудь помочь?

ответ

3

Вы должны использовать метод off.

$('#popup').on('shown.bs.modal', function() { 
    $('#popup').off('shown.bs.modal'); 
    AsyncFn().done(function (result) { 
     AnotherAsyncFn(function() { 
      SomeFunction(); //This function gets called multiple times           
     }); 
    });     
}); 
+0

Спасибо, сработало! –

0

Попробуйте использовать jQuery.unbind() перед тем как добавить событие еще раз.

dayClick: function (date, allDay, jsEvent, view) { 
    var dateString = ''; 
    dateString = moment(date, 'YYYY-MM-DD').format().split('T')[0]; 
    $('#popup').modal('toggle'); 
    $('#popup').unbind("shown.bs.modal").on('shown.bs.modal', function() { 
    AsyncFn().done(function (result) { 
     AnotherAsyncFn(function() { 
      SomeFunction(); //This function gets called multiple times           
      }); 
     });     
    });       
} 
Смежные вопросы