問題

今、僕はBackboneを使った画面の実装をしてました。
スクロールを使っている画面です。

いつものように

// ・・・・
el : .sample,
events: {
    click .button : clickButton,
    scroll .contents: scrollContents
},
// ・・・・

と書きました。





f:id:nullppo:20170629132542p:plain
おい!動かないじゃねぇか!!!

なんで動かなかったのか

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できないみたいです。

やってみた

See the Pen Scroll Events by Daiki Nakamura (@DaikiNakamura) on CodePen.

はい。動きませんね。

僕は直でONしちゃいました。。。

この問題、renderが終わった後で、
子要素に直接バインドという手段で解決出来ます。(非推奨!

幸いなことにイベントを設定したかったViewは、
rerenderすることのないViewでした。(DOMの書き換えが発生しない)
なので、この手段が使えました。


はい。おわり。