fullcalendar无法正确渲染流星

Pet*_*Unn 1 javascript jquery meteor

另一个尝试让这个排序.我在https://github.com/pnunn/testFullCalendar上创建了一个repo, 它有一个正在运行的流星应用程序,它显示了meteor无法正确呈现日历的问题.

首次加载时,日历上没有可见事件.导航到上个月或下个月再返回,然后神奇地显示事件.如果单击某个事件并更改其中一个复选框(事件颜色应更改),则会再次呈现该事件,或者在手动刷新页面之前再次正确呈现该事件.

有人能告诉我如何解决这个问题吗?我已经尝试过调用re-render,eventRender和日历文档中的每个函数组合,但还没有破解魔术.

谢谢.

彼得.

Kub*_*bek 5

您的问题已修复,请访问https://github.com/parhelium/testFullCalendar.

首先,需要引用Calendar的实例

calendar =  $('#calendar').fullCalendar({...}).data().fullCalendar;
Run Code Online (Sandbox Code Playgroud)

使用Requests.find()的函数可以使用Deps.autorun包装,以便每次更新Requests集合时重新运行它:

    Template.packLayout.rendered = function(){

  calendar = $('#calendar').fullCalendar({
    dayClick:function( date, allDay, jsEvent, view ) {
      Requests.insert({title:'Request',start:date,end:date,color:'red',className:'todo'});
      Session.set('lastMod',new Date());
    },
    eventClick:function(reqEvent,jsEvent,view){
      Session.set('editingReqEvent',reqEvent.id);
      Session.set('showEditEvent',true);
    },
    eventDrop:function(reqEvent){
      Requests.update(reqEvent.id, {$set: {start:reqEvent.start,end:reqEvent.end}});
      Session.set('lastMod',new Date());
    },
    events: function(start, end, callback) {
      var events = [];
      reqEvents = Requests.find({},{reactive:false});
      reqEvents.forEach(function(evt){
        event = {id:evt._id,title:evt.title,start:evt.start,end:evt.end,color:evt.color};
        events.push(event);
      })
      callback(events);
    },
    editable:true,
    weekMode: 'liquid',
  }).data().fullCalendar;

  Deps.autorun(function(){
    allReqsCursor = Requests.find().fetch();
    console.log("Autorun -> ", allReqsCursor.length)
    if(calendar)
        calendar.refetchEvents();
  })
};
Run Code Online (Sandbox Code Playgroud)