Backbone.js Firebase-回火嵌入引用
我目前正在尝试在新绑定中复制我的非主干Firebase应用程序。以下是我遇到的问题: 我的firebase具有某些根引用。一条/messages包含邮件正文,而/inbox具有以下格式的项目列表:Backbone.js Firebase-回火嵌入引用,backbone.js,firebase,backfire,Backbone.js,Firebase,Backfire,我目前正在尝试在新绑定中复制我的非主干Firebase应用程序。以下是我遇到的问题: 我的firebase具有某些根引用。一条/messages包含邮件正文,而/inbox具有以下格式的项目列表: /inbox -- id: timestamp -- id: timestamp /messages -- id: -- message: hello -- user: tom -- id: -- message: hello -- user: tom 。。。等
/inbox
-- id: timestamp
-- id: timestamp
/messages
-- id:
-- message: hello
-- user: tom
-- id:
-- message: hello
-- user: tom
。。。等
现在这很好,当我以这种方式创建我的收藏时:
var messageModel = Backbone.Model.extend({});
var messagesCollection = Backbone.Firebase.Collection.extend({
model: messageModel,
firebase: this.userMessagesRef.child(this.user.uid)
});
我得到了我的消息ID和时间戳列表。现在的问题是,由于这些文档被嵌入或链接,主干网不知道如何获取它们,目前我必须在视图中执行此操作:
// Set up the message item view
var messageItemView = Backbone.View.extend({
tagName: 'div',
template: Handlebars.compile(itemTpl),
initialize: function() {
this.listenTo(this.model, 'change', this.render());
},
render: function() {
var selfView = this;
self.message.messagesRef.child(this.model.get('id')).once('value', function(snapshot) {
selfView.model.set(snapshot.val(), {silent: true});
$(selfView.$el)
.addClass('message')
.data({
'id': selfView.model.get('id'),
'message': selfView.model.get('message')
})
.html(selfView.template(selfView.model.toJSON()));
return selfView;
});
return this;
}
});
这完全破坏了所有的主干比较器,使我很难处理嵌入的文档
我希望在Backbone.Firebase.Model中,我可以通过在某个地方传递ID来简单地初始化它,但我似乎不知道该在哪里执行此操作-有什么想法吗?是否有什么东西阻止了您扩展Backbone.Firebase.Model?我相信你可以用这个简单地观察添加/删除事件。listenTo(…)并在那里应用你的规范化?这是因为当你从模型初始化firebase时,Backbone.firebase.model不知道要使用什么ID-我想象它需要以某种方式初始化ID。我不知道这意味着什么,但是,假设您设置了firebase url,那么模型id可能与此.firebase.name()等效。我的意思是,您肯定需要使用模型的id属性初始化模型的firebase。它不会自动做到这一点。firebase需要在模型上返回其值,然后才能将集合视为“已加载”。这种“加入”功能很容易实现,无需使用
Backfire
。