ビューの「attachmentClicked」関数が別のオブジェクトでいつ呼び出されるかをリッスンしようとしています。最初にイベントを呼び出すクラスは次のとおりです。
class AttachmentView extends AttachmentViewerView
template: _.template($('#AttachmentViewTemplate').html())
className: "attachmentView"
#
# initialize ->
#
initialize: ->
console.log "AttachmentView initialized"
@render()
events: {
'click' : 'attachmentClicked'
'dblclick' : 'openAttachment'
}
#
# render ->
#
render: ->
@$el.html(@template(@model.toJSON()))
$('div.attachmentViewerView').append(@el)
# @bind 'event', method
#
# attachmentClicked ->
#
attachmentClicked: ->
@$el.addClass('selectedAttachmentView')
このオブジェクトはattachmentClicked
クリック時に呼び出され、このオブジェクトを作成した別のクラスで、そのイベントをリッスンしようとしています。これがそのクラスです
class AttachmentViewerView extends AttachmentAppController
template: _.template($('#AttachmentViewerTemplate').html())
className: "attachmentViewerView"
#
# initialize ->
#
initialize: (options) ->
console.log "AttachmentViewer initialized"
@office = options.office
@ticket = options.ticket
@attachmentViews = []
@render()
#
# render ->
#
render: ->
@$el.html(@template())
# Append to fileViewer Div
$('#attachmentViewerWindow').append(@el)
@renderFiles()
#
# bindEvents ->
#
bindEvents: (view) ->
@listenTo view, 'attachmentClicked', @attachmentClicked
#
# renderFiles ->
#
renderFiles: ->
@attachments = new AttachmentCollection({@office, @ticket})
@attachments.fetch({
success: (collection) =>
_.each collection.models, (model) =>
# Create the attachment views and bind events right away
@bindEvents new AttachmentView({model: model})
})
#
# attachmentClicked ->
#
attachmentClicked: (attachment) ->
console.log( @ )
@$el.find('.selectedAttachmentView').removeClass('selectedAttachmentView') unless @selected == attachment
@selected = attachment
そのため、このクラスが作成されると、最終的にサーバーからファイルを取得する renderFiles が呼び出され、返されたモデルごとにビューが作成され、それをパラメーターとして bindEvent が呼び出されます。
次に bindEvent は、その新しく作成された項目の attachmentClicked メソッドをリッスンし、それをこのクラスの attachmentClicked 関数にバインドしようとします。しかし、うまくいきません。いくつかの方法を試しましたが、問題がどこにあるのかわかりません。ガイダンスをいただければ幸いです。