我正在从视频课程中学习流星。我无法向日历添加事件,它在控制台中出错:未捕获TypeError:CalEvents.insert不是函数 这是我的.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>
有类似的问题,但不完全一样。你能帮我解决这个问题吗?
答案 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取代了。