我正在使用backbone.js编写示例应用程序。
在更新我的模型时,我以这种方式重新渲染我的视图
$('.target').html("");
$('.target').append(this.$el.html(this.template(model)))
在模型更新[关于更改事件]后重新呈现视图后,附加到el
的孩子的事件会丢失[似乎不像jQuery
直播]。这是一个已知问题还是我错过了什么?我应该尝试替换html而不是append
吗? fiddle
答案 0 :(得分:10)
一旦视图在DOM中,您就不需要继续删除和追加它。我认为管理这个的最简单方法是从视图中完全删除DOM插入,并让view.render
的调用者来处理它。
查看:
render: function() {
this.$el.html(this.template(model));
return this;
}
来电者(首次渲染时):
var view = new SomeView();
$('.target').append(view.render().el);
在后续渲染中:
view.render();
在将视图渲染到DOM之后,它可以愉快地重新渲染自身,而无需了解有关父视图的任何信息。事件绑定在渲染之间也应保持不变。