「ビューが表示されたら DOM について何かする」みたいな処理を、 onRender/onShow どちらのフックに書くのが適切なのか?と疑問に思ったのでチャットルームで質問してみた。
onRender と onShow の違いってなんなの?使い分けるべきなの?
https://gitter.im/marionettejs/backbone.marionette?at=55892fa0d682cdb709fc2c9a https://gitter.im/marionettejs/backbone.marionette?at=558931c6de13aa467b1fe48b
onRender はそのビューのテンプレートが HTML 文字列として render されたときに呼ばれる。だから onRender が呼ばれただけでは、そのビューが region の中に表示されているとは限らない。一方 onShow はビューが region の中に表示されたときに呼ばれる。だから onShow が呼ばれただけでは、そのビューの HTML が DOM に attach されているとは限らない。
(後者に想像で補足: どの region にも show されていない LayoutView の中の region に show したら、そういう状況が起こり得る。 Bootstrap modal が消えてる状態で modal の中に show した、とかで発生しそう)
jQuery プラグインを適用したい、みたいなケースでは結局どれを使えばいいの?
http://marionettejs.com/docs/v2.4.2/marionette.view.html#view-attach--onattach-event
View の HTML が DOM に attach された時点で attach イベントが発火する。 onAttach というフックもあるからそれを使うのがおそらくもっとも適切。