您可以綁定到模型/集合上的特定更改以觸發小部件的呈現方法。例如,在一個模型:
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/
這似乎是一個不錯的實用功能發揮,但究竟應該如何叫什麼名字?調用fetch()後,它會覆蓋集合,然後我可以調用此函數來更新(而不是重置)。 – crawf 2012-04-15 00:44:55
您必須使用額外的_temporal_'Model'來獲取原始JSON數據,並從這裏使用'App.Utils.refreshCollection()'方法_refresh_真正的'Collections',而不用調用'fetch()'。 – fguillen 2012-04-15 10:29:48
啊哈,我明白你的意思了!感謝您的提示 - 我實際上使用了上述鏈接的breischl答案,但我寧願不改變源代碼。我會給你的解決方案,並看看它是如何去。謝謝! – crawf 2012-04-15 11:03:23