我尝试用backbone.js实现fullCalendar,但是我收到了一个错误: 未捕获错误:必须传递bindAll函数名称
我正在关注这个有点旧的tutorial,所以可能已经过时但是在网上查看其他更近的例子,代码似乎是对的。 我假设我正在使用Rails应用程序,但我还没有连接数据库,我的数据是假的json文件。
所以这里是我的代码:
$(function() {
var CalendarApp = Backbone.View.extend({
el: $('#wrap'),
initialize: function(){
this.headerModel = new HeaderModel();
this.headerView = new HeaderView({
model: this.headerModel,
el: $('header')
});
this.headerModel.fetch();
this.eventsView = new EventsView({
el: $("#calendarView"),
collection: events
}).render();
this.events.fetch();
}
});
var calendar = new CalendarApp;
});
EventsView.js(这里我收到了错误)
var EventsView = Backbone.View.extend({
collection: events,
initialize: function(){
_.bindAll(this);
this.collection.bind('reset', this.addAll);
},
render: function(){
this.$el.fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay',
ignoreTimezone: false
},
selectable: true,
selectHelper: true,
editable: true
});
},
addAll: function(){
this.$el.fullCalendar ("addEventSource", this.collection.toJSON());
}
});
EventsCollection:
var Events = Backbone.Collection.extend({
model: Event,
url: "events"
});
var events = new Events();
EventModel.js
var Event = Backbone.Model.extend();
我缺少什么?
答案 0 :(得分:2)
bindAll是一个underscore.js方法。在骨干中,它通常用于将this
绑定到类中定义的一堆方法。正如错误所说,你必须至少给它一个函数。
例如,如果您希望确保视图中的addAll
- 方法访问正确的this
,您可以像这样绑定它:
var EventsView = Backbone.View.extend({
collection: events,
initialize: function(){
_.bindAll(this, 'addAll');
this.collection.bind('reset', this.addAll);
},
// Render function removed to clarify
addAll: function(){
this.$el.fullCalendar ("addEventSource", this.collection.toJSON());
}
});