Events 用主干线收听事件的问题
我正在尝试侦听在另一个对象中调用视图的“attachmentClicked”函数的时间。以下是最初调用事件的类:Events 用主干线收听事件的问题,events,backbone.js,coffeescript,backbone-events,event-binding,Events,Backbone.js,Coffeescript,Backbone Events,Event Binding,我正在尝试侦听在另一个对象中调用视图的“attachmentClicked”函数的时间。以下是最初调用事件的类: class AttachmentView extends AttachmentViewerView template: _.template($('#AttachmentViewTemplate').html()) className: "attachmentView" # # initialize -> # initiali
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函数。但是,它不起作用。我试过几种方法,但不确定我的问题出在哪里。非常感谢您的指导。您正在收听您的
附件视图上的'attachmentClicked'
事件:
bindEvents: (view) ->
@listenTo view, 'attachmentClicked', @attachmentClicked
但我看不出有什么会引发这样的事件。在如下视图中设置一些DOM事件处理程序:
events:
'click' : 'attachmentClicked'
'dblclick' : 'openAttachment'
仅仅意味着单击将触发一个attachmentClicked
调用,它不会触发一个'attachmentClicked'
主干事件;如果您想要该事件,则必须自己触发:
attachmentClicked: ->
@$el.addClass('selectedAttachmentView')
@trigger 'attachmentClicked'
热腾腾的。我没有意识到这些事件并没有创建主干事件。我假设它将处理DOM事件并创建主干事件。谢谢。就这样。