Имея дело с конкретными событиями, связанными с одним элементом 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>
Хотя использование ~
для представления элемента, привязанного к событию, будет работать, оно по-прежнему упоминается в приложении дважды — один раз в шаблоне выше и один раз в представлении:
class window.Page extends Backbone.Marionette.Layout
template: '#template-page'
events:
'click button#~do-something': 'doSomething'
Есть лучший способ сделать это? Очень легко что-то пойти не так и случайно внести изменения в html, не понимая последствий (особенно если развиваются шаблоны именования и т. д.). Я могу придумать один способ, но у меня небольшие проблемы.
Возможно, было бы здорово указать переменную в представлении.
class window.Page extends Backbone.Marionette.Layout
template: '#template-page'
@doSomethingButton: 'button#do-something'
events:
'click #{doSomethingButton}: 'doSomething'
Однако я не могу передать эту информацию шаблону. Я видел что-то вроде этого: Как передать дополнительные переменные в символы подчеркивания шаблоны, но без игральных костей. В идеале это будет выглядеть так:
<script type="text/template" id="template-page">
<button id="<%= Page.doSomethingButton %>">click me</button>
</script>
И тогда у меня будет видимость, которую я хочу! Вот что я пробовал: http://jsfiddle.net/franklovecchio/FkNwG/248/< /а>