我是JavaScript和Backbone的新手,我遇到了這個錯誤。Backbone.js - 無法觸發集合中的事件
Router = Backbone.Router.extend({
routes: {
":albumID": "load"
},
load: function (albumID) {
if (controller.collectionInitialized == true) {
console.log("RESET");
album.trigger("clear");
}
var album = new Album([], {
title: albumID
});
controller.trigger("collectionInit");
controller.trigger("switchAlbum", albumID);
}
});
Controller = Backbone.Model.extend({
currentAlbum: "",
collectionInitialized: false,
initialize: function() {
console.log("controller is initialized");
this.on("switchAlbum", function (newAlbum) {
this.currentAlbum = newAlbum;
});
this.on("collectionInit", function() {
this.collectionInitialized = true;
});
}
});
Album = Backbone.Collection.extend({
initialize: function (models, options) {
this.on("clear", this.clear);
},
clear: function() {
this.reset();
this.off();
}
});
我收到此錯誤:Unable to get property 'trigger' of undefined or null reference
。在觸發clear
之前,if
聲明確保album
已經存在。之前我嘗試直接撥打album.reset()
,但得到相同的錯誤。我的猜測是這是某種範圍的問題,有人可以請我指出正確的方向嗎?
但是,如果'專輯'已經被創建,if語句確保它只觸發'clear'。這不重要嗎? – Dmitry 2013-05-08 16:38:42
@DimaShabatin實際上,我根據我對Javascript的瞭解(我不曾碰巧使用過Backbone)。你在哪裏定義'collectionInit'和'collectionInitialized'? – 2013-05-08 16:48:58
只需在帖子中添加更多代碼即可 – Dmitry 2013-05-08 17:13:14