这是场景 - 页面呈现一组窗口小部件,向用户显示一些聚合数据。此数据从API检索,并定期重新计算。显示这些很好(感谢stackoverflow上的优秀人员),但是我在服务器上更改数据时重新渲染视图时遇到了麻烦。
值得注意的是,如果只有一个人更新了数据,我更愿意采用更有效的方法来重新渲染所有页面的小部件(可能是10+)。以一定间隔获取集合很容易,但是有关渲染链式模型的最佳实践是什么?我已经看到有关覆盖同步功能的各种帖子,但不确定要去哪里。
我们有什么方法可以就地重新渲染视图(而不是重新附加到页面上)。
非常感谢
答案 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;
}
});
更完整的小提琴