1

Nodeをバックエンドとして使用してBackboneでアプリを構築しています。アプリの一部として、ビューのクリックイベントを処理しています。例は次のようなものです。

window.MyView = Backbone.View.extend({
   tagName: 'section',
   className: 'calls',

   events: {
      'click a.first': 'gotoFirst',
      'click a.prev': 'gotoPrev',
      'click a.next': 'gotoNext',
      'click a.last': 'gotoLast',
      'click a.page': 'gotoPage'
   },

最初にビューをロードしてクリックすると、すべてが完全に機能します(クリックイベントは正常に処理されます)。ただし、新しいビューに移動してから最初のビューに戻ると、クリックイベントが壊れています。

新しいビューに移動するということは、次のようなことを意味します。

$container.empty();    
$container.append(window.myNewView.render().el);

それから私はそのように戻ります:

$container.empty();
$container.append(window.myView.render().el);

しかし、ビューを再レンダリングすると、クリックイベントが壊れます。どうすればこれを修正できますか?前もって感謝します!

4

1 に答える 1

3

呼び出してビューを削除すると.empty()、DOMイベントが途中で破棄されます。ただし、ビューを再表示するときに自動的に再接続されることはありません。

それらを再接続するには、フープをジャンプする必要があります。これを読む:

http://tbranyen.com/post/missing-jquery-events-while-rendering

より良い答えは、ビューインスタンスを再利用しないことです。ビューを表示する必要があるたびに、新しいビューインスタンスを作成します。

于 2012-06-18T00:42:02.123 に答える