13

backbone.js を使ってサンプルアプリを書いています。

モデルの更新時に、この方法でビューを再レンダリングします

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

モデルの更新後に [変更イベントで] ビューが再レンダリングされると、elの子に関連付けられたイベントが失われます [ライブのようには見えませんjQuery]。これは既知の問題ですか、それとも何か不足していますか? の代わりに 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 に答える