我正在尝试使用Backbone和Firebase:构建一个基本的应用程序
http://jsfiddle.net/C9wew/6324/
var counter = 0;
var Box = Backbone.Firebase.Model.extend({
defaults: {
number: 0
},
//firebase: new Firebase('https://backbone-firebase.firebaseio.com/box')
});
var BoxList = Backbone.Firebase.Collection.extend({
model: Box,
firebase: new Firebase('https://backbone-firebase.firebaseio.com/')
});
var Boxes = new BoxList;
var AddBox = Backbone.View.extend({
el: $('#addBox'),
events: {
"click" : 'addBox'
},
addBox: function () {
console.log("adding box");
Boxes.add({
number: counter
});
counter = counter+1;
}
});
var addBox = new AddBox();
错误堆栈跟踪:
Uncaught TypeError: undefined is not a function backfire.min.js:1
b.Firebase.Collection.b.Collection.extend.constructor backfire.min.js:1
d backbone-min.js:27
(anonymous function) (index):56
jQuery.event.dispatch jquery-git2.js:4397
elemData.handle jquery-git2.js:4076
Uncaught TypeError: Cannot assign to read only property 'id' of 1 backfire.min.js:1
a.extend._childAdded backfire.min.js:1
(anonymous function) firebase.js:93
ic firebase.js:43
Wd firebase.js:93
Ud.Jb firebase.js:93
Xd.Jb firebase.js:94
(anonymous function) firebase.js:109
(anonymous function) firebase.js:59
cc firebase.js:55
R firebase.js:59
(anonymous function) firebase.js:109
Sa firebase.js:23xe firebase.js:109
W firebase.js:109
h.hc firebase.js:117
h.gc firebase.js:85
dd.gc firebase.js:76
(anonymous function) firebase.js:74
Lc firebase.js:58
W.onmessage firebase.js:57
问题是,我在使用Firebase时遇到了很多奇怪的错误。我读到Firefox中存在奇怪的错误,但现在我正在使用Chrome,并收到不同的错误。
这里有几件事。
-
BackboneFire(正式名称为BackFire)已经更新到0.5版本,并进行了大量更新。不是使用
firebase
属性,而是使用url
属性来指定Firebase引用。 -
不要将
Backbone.Firebase.Model
与Backbone.Firebase.Collection
一起使用。集合可以管理其模型事件。在0.5模型中,Backbone.Firebase.Collection
中的模型有一个firebase引用,可以处理它们对firebase的更新。
这里的问题是您试图同步一个基元值,在这种情况下是一个字符串。
与其同步字符串,不如向上一级同步对象。主干表示模型,而不是基本体。因此,BackboneFire中同步的所有内容也必须是一个对象。