1

ウィンドウのスクロール イベントを次のようなビューのメソッドにバインドしました。

MyView = Backbone.View.extend({
  initialize: function(){
    _.bindAll(this, 'handleScrolling');
    $(window).off('scroll', this.handleScrolling).on('scroll', this.handleScrolling);
  }
})

これが機能していないことがわかります。このコールバックが、このビューがインスタンス化された回数だけトリガーされた場合。ただし、からハンドラを削除するoffと、正しくバインドが解除され、スクロールごとに 1 回だけトリガーされます。お気に入り:

$(window).off('scroll').on('scroll', this.handleScrolling);

なぜこれが起こっているのですか?このイベントからすべてのコールバックを削除したくありません。他のビュー/コードがイベントをイベントにバインドし、アプリの動作が予期しないものになる可能性があるためです。

イベントをウィンドウ/ドキュメントまたは現在のビューの範囲外の他の要素にバインドするより良い方法はありますか?

4

2 に答える 2