ボタンをクリックして地図を表示するオプションをユーザーに提供するバックボーンアプリケーションがあります。CharactersViewでは、対応するshowMap関数を使用して「showMap」イベントが設定され(#map_buttonをクリックしてトリガーされます)、イベントがトリガーされるとマップが表示されます。CharactersViewはcharacter_templateもレンダリングし、character_templateには#map_buttonとクラス'mapの実際のマップコードが含まれます。'#map_buttonがレンダリングされるマップと同じテンプレート(chracters_template)にある場合は、すべて正常に機能します。 CharactersViewから。ただし、#map_buttonをcharacter_templateの外に移動すると(たとえば、別のテンプレートに移動したり、ページの本文に直接移動したりすると)、CharactersViewのshowMapイベントはトリガーされなくなります。マップはcharacter_templateに表示されなくなります。#map_buttonをクリックしようとする前に、文字テンプレートがページにレンダリングされるまで待っていますが、それでも機能しません。
上記の説明と以下のコードから、ここでの問題とは何か、そしてそれをどのように解決できるかを教えてください。
コード
ボタンがクリックされたときにマップが表示されるように、CharactersViewでイベントバインディングを設定します
events: {
'click #map_button' : 'showMap'
},
showMap: function(){
$(".map").toggle();
}
キャラクタービューによってレンダリングされたcharacter_template。表示されるクラス'map'の実際のマップは、キャラクタービューによってレンダリングされるのと同じテンプレートにあります。
<script id="character_template" type="text/x-handlebars">
<input class='action_button' id='map_button' type='button' value='Show Map' />
<%= image_tag "http://maps.google.com/maps/api/staticmap?size=300x200&sensor=false&zoom=12&markers={{ latitude }}%2C{{ longitude }}", :class => "map" %>
</script>
character_templateからボタンを削除して別のテンプレートに配置すると、CharactersViewのクリック#map_buttonイベントが機能しなくなります。ボタンをhtmlの本文に直接配置した場合も同じ結果になります。
...他のコードは省略されています...