Firebase - Backfire嵌入式参考

时间:2014-08-29 14:10:18

标签: backbone.js firebase backfire

我目前正在尝试在新绑定中复制我的非骨干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来简单地初始化它,但我似乎无法看到在哪做什么 - 任何想法?

0 个答案:

没有答案