可以像这样将@template() 分配给@el:
someview.js.coffee
class SomeView extends Backbone.View
template: JST["app/templates/sometemplate"]
events:
'click' : 'onClick'
initialize: ->
render: ->
@el = @template()
onClick: ->
#do something
index.js.coffee
class IndexView extends Backbone.View
initialize: ->
@collection.on('reset', @render, this)
render: ->
$(@el).html('')
for m in @collection.models
view = new App.Views.SomeView(model: m)
$(@el).append(view.render().el)
sometemplate.jst.hamlc
.someview_template
.stuff_inside
我所处的情况是 SomeView 类被一个 div 包裹,这让我失去了我想直接在“.someview_template”元素上分配的点击事件。我想解决这个问题的方法是重置 @el = @template()... 这可能还是正确的方法?
Backbone.View 的@el 是否应该始终是包含的 div,而模板应该只是该 div 中包含的元素?如果@el 自动设置为@template() 中的根节点,似乎会更基本。我是否应该让 sometemplate.jst.hamlc 只包含“.stuff_inside”,然后在 SomeView 中设置 $(@el).addClass('someview_template'),这样我就可以确定将事件分配给该元素?
谢谢!