BackboneFire是否支持使用AutoSync模型进行非AutoSync收集

时间:2014-12-15 20:11:23

标签: javascript backbone.js firebase backbone.js-collections backbonefire

基本上我想要这个设置:

var Game = Backbone.Model.extend({
    defaults: {
    },
    autoSync: true
});

var Games = Backbone.Firebase.Collection.extend({
    url: 'https://<myapp>.firebaseio.com/games',
    autoSync: false,
    model: Game
});

每个游戏都应该与服务器数据自动同步,但我不想听整个child_ * Firebase系列事件。目标是更新单个项目视图,而不是重新绘制整个列表。

亲切的问候那些人和快乐的编码;)

1 个答案:

答案 0 :(得分:2)

您可以使用启用了Backbone.Firebase.Collection的{​​{1}}来更新单个项目。要重新渲染单个项目,您需要在项目触发更改事件时收听。此概念显示在Firebase文档中的BackboneFire快速入门中。

但请注意,您不能将autoSyncBackbone.Firebase.Model混合使用。

Todo Model&amp;集合

在下面的示例中,请注意Backbone.Firebase.Collection中常规Backbone.Model的使用方式。默认情况下,该集合已启用Backbone.Firebase.Collection

autoSync

Todo View

以下示例是单个待办事项的视图。在// A simple todo model var Todo = Backbone.Model.extend({ defaults: { title: "New Todo" } }); // Create a Firebase collection and set the 'firebase' property // to the URL of your Firebase var TodoCollection = Backbone.Firebase.Collection.extend({ model: Todo, url: "https://<your-firebase>.firebaseio.com" }); 函数内部,initialize方法用于侦听模型的listenTo事件。每次远程或本地更新模型时都会触发change事件(远程持续更改)。

change

呈现列表

设置// A view for an individual todo item var TodoView = Backbone.View.extend({ tagName: "li", template: _.template("<%= title %>"), initialize: function() { // whenever the model changes trigger a re-render of the single view this.listenTo(this.model, "change", this.render); }, render: function() { this.$el.html(this.template(this.model.toJSON())); return this; }, }); 后,列表也可以轻松呈现。在下面TodoView的{​​{1}}函数中,我们会收听initialize AppView。只要将项添加到集合中,就会执行collection函数。 TodoCollection功能只是向页面添加新的addOne

addOne