次のように @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.コーヒー
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') を設定するだけで、イベントがその要素に割り当てられていることを確認できますか?
ありがとう!