Backbone渲染模型更新视图

Tam*_*mil 12 javascript backbone.js

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

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

$('.target').html("");
$('.target').append(this.$el.html(this.template(model)))
Run Code Online (Sandbox Code Playgroud)

一旦在模型更新[在变化事件]之后重新渲染视图,附加到el孩子的事件就会丢失[似乎不像jQuery现场].这是一个已知问题还是我错过了什么?我应该尝试替换html而不是append小提琴

jev*_*lio 10

一旦视图在DOM中,您就不需要继续删除和附加它.我认为管理这个的最简单方法是从视图中完全删除DOM插入,并让调用者view.render来处理它.

视图:

render: function() {
  this.$el.html(this.template(model));
  return this;
}
Run Code Online (Sandbox Code Playgroud)

来电者(首次渲染):

var view = new SomeView();
$('.target').append(view.render().el);
Run Code Online (Sandbox Code Playgroud)

在后续渲染中:

view.render();
Run Code Online (Sandbox Code Playgroud)

在将视图渲染到DOM之后,它可以愉快地重新渲染自身,而无需了解有关父视图的任何信息.事件绑定在渲染之间也应保持不变.

  • 请注意,如果`this`视图包含子视图,则在渲染函数中需要添加`this.delegateEvents();`. (2认同)