在处理绑定到单个 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/