Backbone Render View при обновлении модели

Я пишу пример приложения, используя backbone.js.

При обновлении моей модели я повторно создаю свое представление таким образом

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

После повторного отображения представления после обновления модели [при событии изменения] события, привязанные к дочерним элементам el, теряются [похоже, не похожи на jQuery live]. Это известная проблема или я что-то упускаю? Должен ли я попытаться заменить html вместо append? fiddle

Ответ 1

Как только представление находится в DOM, вам не нужно удалять и добавлять его. Я думаю, что самый простой способ справиться с этим - удалить вставку DOM из представления в целом и позволить вызывающему абоненту view.render позаботиться об этом.

Вид:

render: function() {
  this.$el.html(this.template(model));
  return this;
}

Caller (при первом рендеринге):

var view = new SomeView();
$('.target').append(view.render().el);

На последующих рендерах:

view.render();

После представления представления в DOM он может продолжать счастливо перерисовывать себя, не зная ничего о родительских представлениях. Связывание событий также должно оставаться неизменным между рендерами.