Backbone渲染模型更新视图

时间:2012-12-19 16:04:47

标签: javascript backbone.js

我正在使用backbone.js编写示例应用程序。

在更新我的模型时,我以这种方式重新渲染我的视图

$('.target').html("");
$('.target').append(this.$el.html(this.template(model)))

在模型更新[关于更改事件]后重新呈现视图后,附加到el的孩子的事件会丢失[似乎不像jQuery直播]。这是一个已知问题还是我错过了什么?我应该尝试替换html而不是append吗? fiddle

1 个答案:

答案 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之后,它可以愉快地重新渲染自身,而无需了解有关父视图的任何信息。事件绑定在渲染之间也应保持不变。