所以我有一个使用 backbone.js 和 coffeescript 的 Rails 应用程序。我创建了一个名为“Overlay”的主干 View ,如下所示:
class MyApp.Views.Overlay extends Backbone.View
template: JST['overlay']
contentDiv: ->
$('.overlay-content')
initialize: (options) ->
@content = options.content
@width = options.width
render: ->
@$el.append @template()
@contentDiv().append @content
events: ->
'click': 'overlayClick'
'click .close': 'removeOverlay'
overlayClick: (event) ->
target = $(event.target)
unless target.hasClass('overlay-content') or target.parents('.overlay-content').length > 0
@removeOverlay()
removeOverlay: ->
@$('.overlay').remove()
和我的模板(这是 hamljs)
.overlay
.overlay-content
%a.close Close
我是这样调用它的
@overlay = new MyApp.Views.Overlay(el: 'body', content: 'some content)
@overlay.render()
这非常简单,本质上是您将一些任意字符串或 html 传递给它以在叠加层中呈现,它会向主体添加一个漂亮的 lil 叠加层。
我想做的是在 View 中编写一些代码来处理此叠加层的生成,如下所示:
@overlay.on('close', someFunction)
但是,我对如何着手做这件事一无所知。有什么建议吗?
最佳答案
您可以使用主干从 View 触发事件
removeOverlay: ->
@$('.overlay').remove()
@trigger('close')
关于javascript - 创建关闭事件以从自定义叠加层发出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20509243/