13

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

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

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

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

4

1 回答 1

11

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

于 2012-12-19T16:15:29.807 回答