Firebase and Backbone

Firebase and Backbone

本文关键字:Backbone and Firebase      更新时间:2023-09-26

我正在尝试使用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.ModelBackbone.Firebase.Collection一起使用。集合可以管理其模型事件。在0.5模型中,Backbone.Firebase.Collection中的模型有一个firebase引用,可以处理它们对firebase的更新。

这里的问题是您试图同步一个基元值,在这种情况下是一个字符串。

与其同步字符串,不如向上一级同步对象。主干表示模型,而不是基本体。因此,BackboneFire中同步的所有内容也必须是一个对象。