1

这是场景 - 一个页面呈现一组小部件,这些小部件向用户显示一些聚合数据。此数据从 API 中检索,并定期重新计算。显示这些很好(感谢 stackoverflow 的优秀人员),但是当服务器上的数据发生更改时,我只是无法重新渲染视图。

值得注意的是,如果只有一个更新了数据,我更喜欢不重新渲染所有页面的小部件(可能是 10+)的更有效的方法。每隔一段时间获取一个集合很容易,但是关于渲染一个 chaned 模型的最佳实践是什么?我看过各种关于覆盖同步功能的帖子,但不确定该去哪里。

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

非常感谢

4

2 回答 2

2

我认为您需要的是在不刷新整个集合的情况下将现有模型更新到集合中。在这里检查我的答案

于 2012-04-14T14:59:09.533 回答
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;       
    }
});

一个更完整的 Fiddle 可以使用http://jsfiddle.net/GqnKC/

于 2012-04-14T15:03:13.167 回答