単一の dom 要素にバインドされた特定のイベントを処理する場合、問題の要素にイベントがあることを明らかにできるようにする方法が必要です... JavaScript を見ずに (二重参照を削除して)。
たとえば、次の単純なテンプレートを見てみましょう。
<script type="text/template" id="template-page">
<button id="do-something">click me</button>
</script>
問題のどのテンプレート パーサーでも使用されていないシンボルを使用することができ (私の場合、Play! を使用しているので@
アウトです)、ボタンがイベントにバインドされていることを開発者に明らかにすることができます。 (実際にこれが機能するかどうかはわかりませんが、要点はわかります):
<script type="text/template" id="template-page">
<button id="~do-something">click me</button>
</script>
を使用し~
てイベントにバインドされた要素を表すことはできますが、アプリでは 2 回参照されます (上記のテンプレートで 1 回、ビューで 1 回)。
class window.Page extends Backbone.Marionette.Layout
template: '#template-page'
events:
'click button#~do-something': 'doSomething'
これを行うより良い方法はありますか?物事がうまくいかず、結果を理解せずに誤って html に変更を加えてしまうことは非常に簡単です (特に命名パターンが進化する場合など)。1つの方法を考えることができますが、少し問題があります。
おそらく、ビューで変数を指定するのはクールでしょう。
class window.Page extends Backbone.Marionette.Layout
template: '#template-page'
@doSomethingButton: 'button#do-something'
events:
'click #{doSomethingButton}: 'doSomething'
ただし、この情報をテンプレートに取得できないようです。私は次のようなものを見ました: How to pass additional variables in to underscores templates , but no dice. 理想的には、次のようになります。
<script type="text/template" id="template-page">
<button id="<%= Page.doSomethingButton %>">click me</button>
</script>
そして、私は私が望む可視性を手に入れるでしょう!これが私が試したことです:http://jsfiddle.net/franklovecchio/FkNwG/248/