未捕获的TypeError:CalEvents.insert不是函数

时间:2015-12-27 13:14:25

标签: meteor fullcalendar

我正在从视频课程中学习流星。我无法向日历添加事件,它在控制台中出错:未捕获TypeError:CalEvents.insert不是函数 error 这是我的.js文件:

CalEvents = new Meteor.Collection('calevents');
Session.setDefault('editing_calevents', null);
Session.setDefault('showEditEvent', false);
Session.setDefault('lastMod', null)

Router.route('/', function () {
  this.render('homepage');
});

Router.route('/calendar', function () {
  this.render('calendar');
});

Template.calendar.showEditEvent = function(){
    return Session.get('showEditEvent');
}
Template.calendar.rendered = function(){
    $('#calendar').fullCalendar({
        dayClick:function(date, allDay, jsEvent, view){
            CalEvents.insert({title:'New Event', start:date,end:date});
            Session.set('lastMod', new Date());
        },
        eventClick:function(calEvent, jsEvent, view){
            Session.set('editing_calevents', calEvent.id);
            Session.set('showEditEvent', true);
        },
        events:function(start, end, callback){
           var events = [];
            CalEvents = CalEvents.find();
            CalEvents.forEach(function(evt){
                events.push({
                    id:evt._id,
                    title:evt.title,
                    start:evt.start,
                    end:evt.end
                })
            })
            callback(events);
        }
    });
}

Template.calendar.lastMod = function(){
    return Session.get('lastMod');
}

这是calendar.html文件:

    <template name="calendar">
  <div class="container">
     <div class="row">
         <div id="calendar">
         {{#if showEditEvent}}
         {{>editEvent}}
         {{/if}}
         <input type="hidden" name="lastMod" id="lastMod"  value="{{lastMod}}">

         </div>
     </div> 
  </div>
</template>
<template name='editEvent'>
    <div id="example" class="modal">
    <div class="modle-header">
        <a class="close" data-dismiss="modal">x</a>
        <h3>Header</h3>
    </div> 
    <div class="modal-body">
        <h4>Body</h4>
        <p>text</p>
    </div>
    <div class="model-footer">
       <a href="#" class="btn btn-success">Save</a>
        <a href="#" class="btn" data-dismiss="modal">Cansel</a>
    </div>
    </div>
</template>

有类似的问题,但不完全一样。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

name最初设置为CalEvents个实例。将其更改为:

Meteor.Collection

稍后在您的代码中,您将其重新分配给游标:

CalEvents = new Mongo.Collection('calevents');

CalEvents = CalEvents.find(); 运行时,它会发现dayClick是一个游标,因此它没有CalEvents函数。

解决方案是在insert回调中选择另一个变量名称:

events

此外,var CalEventsCursor = CalEvents.find(); CalEventsCursor.forEach(...) 已被onRendered取代了。