Backbone.js从服务器就地更新模型

时间:2012-04-14 13:24:35

标签: backbone.js

这是场景 - 页面呈现一组窗口小部件,向用户显示一些聚合数据。此数据从API检索,并定期重新计算。显示这些很好(感谢stackoverflow上的优秀人员),但是我在服务器上更改数据时重新渲染视图时遇到了麻烦。

值得注意的是,如果只有一个人更新了数据,我更愿意采用更有效的方法来重新渲染所有页面的小部件(可能是10+)。以一定间隔获取集合很容易,但是有关渲染链式模型的最佳实践是什么?我已经看到有关覆盖同步功能的各种帖子,但不确定要去哪里。

我们有什么方法可以就地重新渲染视图(而不是重新附加到页面上)。

非常感谢

2 个答案:

答案 0 :(得分:2)

我认为您需要的是将现有模型更新到集合中而不刷新整个集合。检查my answer here

答案 1 :(得分:1)

您可以绑定到模型/集合上的特定更改,以触发窗口小部件的呈现方法。例如,在模型上:

var Widget1=Backbone.View.extend({
    initialize: function() {
        // all changes on the model will render the widget
        this.model.on("change", this.render, this); 
    },

    render: function() {
        console.log("Render W1");
        this.$el.html("W1 :"+this.model.get("name")+" "+this.model.get("detail"));
        return this;
    }
});
var Widget2=Backbone.View.extend({
    initialize: function() {
        // only a change on `detail` will render the widget
        this.model.on("change:detail", this.render, this);  
    },

    render: function() {
        console.log("Render W2");
        this.$el.html("W2 :"+this.model.get("detail"));
        return this;       
    }
});

使用http://jsfiddle.net/GqnKC/

更完整的小提琴