Firebase和Backbone

时间:2014-11-05 17:36:20

标签: javascript backbone.js firebase backfire backbonefire

我正在尝试使用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并获得不同的错误。

1 个答案:

答案 0 :(得分:2)

这里有几件事。

  • BackboneFire(正式BackFire)已经更新为0.5版本并进行了大量更新。您可以使用firebase属性来指定Firebase参考,而不是使用url属性。

  • 请勿将Backbone.Firebase.ModelBackbone.Firebase.Collection一起使用。集合可以管理它的模型事件。在0.5模型中,Backbone.Firebase.Collection中的模型具有可以处理其对Firebase的更新的firebase引用。

这里的问题是你正在尝试同步原始值,在这种情况下是一个字符串。

不是同步字符串而是升级一级并同步对象。 Backbone代表模型而不是原始代码。因此,BackboneFire中同步的所有内容也必须是一个对象。