Javascript 使用meteor无法正确渲染fullcalendar

Javascript 使用meteor无法正确渲染fullcalendar,javascript,jquery,meteor,Javascript,Jquery,Meteor,另一次尝试将此排序。我已经在 它有一个正在运行的meteor应用程序,显示meteor没有正确渲染日历的问题 首次加载时,日历上没有可见的事件。导航到上一个月或下一个月,然后再返回,事件就会神奇地出现。如果单击某个事件并更改其中一个复选框(事件颜色应更改),则在手动刷新页面之前,事件将再次完全或正确呈现 谁能告诉我怎么修理这个吗?我尝试过调用日历文档中的re-render、eventRender和所有函数组合,但还没有破解神奇的一个 谢谢 Peter。您的问题的修复程序正在运行中 首先,需要引用

另一次尝试将此排序。我已经在 它有一个正在运行的meteor应用程序,显示meteor没有正确渲染日历的问题

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

谁能告诉我怎么修理这个吗?我尝试过调用日历文档中的re-render、eventRender和所有函数组合,但还没有破解神奇的一个

谢谢


Peter。

您的问题的修复程序正在运行中

首先,需要引用日历的实例

calendar =  $('#calendar').fullCalendar({...}).data().fullCalendar;
使用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();
  })
};

解决您的问题的方法正在使用中

首先,需要引用日历的实例

calendar =  $('#calendar').fullCalendar({...}).data().fullCalendar;
使用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();
  })
};

根据最新的《流星1.5.2》截至日期和
fullcalendar:fullcalendar
以下是工作代码

Template.packLayout.rendered = function(){
  calendar = $('#calendar').fullCalendar({
    events: function(start, end, timezone, callback) { // timezone added here
      // same code
    },
    editable:true,
    weekMode: 'liquid',
  }).data().fullCalendar;

  this.autorun(function(){ // Deps.autorun replaced here
    // same code
  })
};
注:
函数(开始、结束、时区、回调){}
是根据[


根据最新的《流星1.5.2》截至日期和
fullcalendar:fullcalendar
以下是工作代码

Template.packLayout.rendered = function(){
  calendar = $('#calendar').fullCalendar({
    events: function(start, end, timezone, callback) { // timezone added here
      // same code
    },
    editable:true,
    weekMode: 'liquid',
  }).data().fullCalendar;

  this.autorun(function(){ // Deps.autorun replaced here
    // same code
  })
};
注:
函数(开始、结束、时区、回调){}
是根据[


开始研究这个。请看一看。开始研究这个。请看一看。这真是太棒了库巴·维罗贝克…非常感谢。我很接近,但永远也不会到达那里。我很高兴我能帮助你。啊…一定有什么微妙的错误…我从上面输入了正确的代码(我正在愉快地运行你的测试代码)进入我的应用程序,日历现在爆炸,Deps afterFlush函数出现异常函数:TypeError:undefined不是calendar的函数。$.fullCalendar.events()在_fetchEventSource()在fetchEventSource…完整代码存储在github上。将您的版本与此进行比较:。这就是我一直在做的事情(我想用一把漂亮的梳子)一定是简单的,我会不断地抨击。错误对我没有真正的帮助。那是很棒的Kuba Wyrobek…非常感谢。我很接近,但永远也不会到那里。我很高兴我能帮到你。啊…一定有什么微妙的错误…我把上面的确切代码放在上面(我正在愉快地运行您的测试代码)到我的应用程序中,日历现在出现异常,来自Deps afterFlush函数function:TypeError:undefined不是calendar的函数。$.fullCalendar.events()位于_fetchEventSource()在fetchEventSource…完整的代码存储在github上。请将您的版本与此进行比较:。这就是我一直在做的Kuba(我认为是精巧的梳理)。一定很简单,我会继续抨击。但错误并没有真正帮助我。