Backboneでscrollイベントが動かねえぇえええ!!!
問題
今、僕はBackboneを使った画面の実装をしてました。
スクロールを使っている画面です。
いつものように
// ・・・・ el : '.sample', events: { 'click .button' : 'clickButton', 'scroll .contents': 'scrollContents' }, // ・・・・
と書きました。
・
・
・
・
おい!動かないじゃねぇか!!!
なんで動かなかったのか
http://backbonejs.org/#View-events
Backbone.View.eventsに書いたイベントは、
jQueryのonを使用して関連付けられます。
rootとなるエレメントはthis.elです。
(英語が苦手だからそんなニュアンスだと思うという予測)
恐らく、上記のeventsはこうなるはず。
$('.sample').on('click', '.button', this.clickButton); $('.sample').on('scroll', '.scroll', this.scrollContents);
なんか良さそうに見えますよね。
しかーし!!!
scrollイベントは、delegateできないみたいです。
僕は直でONしちゃいました。。。
この問題、renderが終わった後で、
子要素に直接バインドという手段で解決出来ます。(非推奨!
幸いなことにイベントを設定したかったViewは、
rerenderすることのないViewでした。(DOMの書き換えが発生しない)
なので、この手段が使えました。
はい。おわり。