JST テンプレートを使用する Rails Backbone アプリのデモをいじっています。user_ registration ビューには、次のような行があります
template: JST["users/signup"],
user_registration
これはサインアップ テンプレートを参照し、その一部にはIDを持つフォームがあります
<form accept-charset="UTF-8" action="/users" class="simple_form form-horizontal" id="user_registration" method="post">
フォームで [送信] をクリックすると、ユーザー登録ビューがサインアップ関数を呼び出します
events: {
"submit #user_registration" : "signup"
},
重要なことに、ユーザー登録ビューは明示的にel
. el
通常、 はビューがイベントをリッスンする領域を定義するため、これは重要だと思います。このビューでは、宣言されていませんが、送信ボタンがクリックされたときを認識しています。
行を削除すると
template: JST["users/signup"],
そのテンプレートのコード (#user_registration id を含む) をアンダースコア テンプレートにコピーし、その初期化で user_registration ビューにそのテンプレートを次のように使用するように指示します。
var template = $('#signup').html();
this.template = _.template(template);
#user_registration フォームで送信をクリックすると、user_registration ビューはそのイベントを認識しなくなります。
要約すると、user_registration ビューは、template: JST["users/signup"],
アンダースコアを使用した場合ではなく、テンプレートに使用している場合にのみ送信イベントを受け取ります。どちらの場合も、ビューが でリッスンする領域を明示的に宣言しませんel
。何故ですか?