2016-02-10 53 views
0

所以我有一個日曆進入MeteorJS應用程序,當外部添加到日曆時它顯示,但只有在重新加載後。所以我的問題是,refetchEvents不能正常工作按下面的代碼我有一個事件阻止該控制器:與MeteorJS和全日曆的麻煩

'submit #add-event': function(event, template) { 
var title = event.target.title.value; 
var start = event.target.startDate.value; 
var end = event.target.endDate.value; 
var invited = $('select[name="invited"]').val(); 
var matter = event.target.matter.value; 
var where = event.target.where.value; 
var description = event.target.description.value; 

params = { 
    title: title, 
    start: start, 
    end: end, 
    invited: invited, 
    matter: matter, 
    where: where, 
    description: description 
} 

Meteor.call('addEvent', params); 

toastr.success('Event created!'); 
$('#addEvent').modal('hide'); 
$('#calendar').fullCalendar('refetchEvents'); 

event.preventDefault(); 
} 

同樣是在rendered回調發生此模板(需要顯示新事件之前重裝):

dayClick: function(date, allDay, jsEvent, view) { 
     // Insert the day someone's clicked on 
     var invited = []; 
     invited.push(Meteor.user().username); 

     params = { 
      title: 'New Event', 
      start: date, 
      end: date, 
      invited: invited, 
      matter: null, 
      where: null, 
      description: null 
     } 

     Meteor.call('addEvent', params); 

     // CalEvents.insert({title:'New Event',start:date,end:date, allDay: false}); 
     // Refreshes the calendar 
     $('#calendar').fullCalendar('refetchEvents'); 
    } 

爲如何讓refetchEvents工作任何想法?

我使用的這款全歷包 - https://atmospherejs.com/mrt/fullcalendar

+0

你加載從Ajax調用的事件?你有沒有使用fullcalendar的任何來源加載事件?像事件(作爲json提要),事件(作爲函數),eventSources等等。 –

+0

@ChintanMirani事件通過正在與Iron Router控制器訂閱的出版物加載到Meteor中。默認情況下,這是被動的,並且與應用程序中的所有其他實現一起即時。 –

回答

0

OK我已經設法解決這個問題。被做異步調用來解決,而不是:

'submit #add-event': function(event, template) { 
    var title = event.target.title.value; 
    var start = event.target.startDate.value; 
    var end = event.target.endDate.value; 
    var invited = $('select[name="invited"]').val(); 
    var matter = event.target.matter.value; 
    var where = event.target.where.value; 
    var description = event.target.description.value; 

    params = { 
     title: title, 
     start: new Date(start), 
     end: new Date(end), 
     invited: invited, 
     matter: matter, 
     where: where, 
     description: description 
    } 

    Meteor.call('addEvent', params, function(error, result) { 
     if (!error) { 
     toastr.success('Event created!'); 
     $('#addEvent').modal('hide'); 
     $('#calendar').fullCalendar('refetchEvents'); 
     } else { 
     toastr.error(error.reason); 
     } 
    }); 


    event.preventDefault(); 
    } 

dayClick: function(date, allDay, jsEvent, view) { 
     // Insert the day someone's clicked on 
     var invited = []; 
     invited.push(Meteor.user().username); 

    params = { 
     title: 'New Event', 
     start: date, 
     end: date, 
     invited: invited, 
     matter: null, 
     where: null, 
     description: null 
    } 

    Meteor.call('addEvent', params, function(error, result) { 
     $('#calendar').fullCalendar('refetchEvents'); 
    }); 

    // CalEvents.insert({title:'New Event',start:date,end:date, allDay: false}); 
    // Refreshes the calendar 
}