我目前正在尝试在新绑定中复制我的非骨干Firebase应用。以下是我遇到的问题:
我的firebase有一些根引用。一个/消息包含消息正文,而/ inbox包含以这种格式的项目列表:
/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&时间戳回来了。现在问题是这些文件是嵌入或链接的,Backbone不知道如何获取它们,目前我必须在视图中执行此操作:
// 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;
}
});
这完全破坏了所有Backbones比较器,并且使我很难使用嵌入式文档。
我希望在Backbone.Firebase.Model中我可以通过在某个地方传递ID来简单地初始化它,但我似乎无法看到在哪做什么 - 任何想法?