创建关闭事件以从自定义覆盖发射

Create Close Event To Emit from Custom Overlay

本文关键字:自定义 覆盖 发射 事件 创建      更新时间:2024-06-07

所以我有一个使用backbone.js和coffeescript的rails应用程序。我创建了一个名为"Overlay"的主干视图,看起来像这样:

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覆盖。

我想做的是在视图中编写一些代码,处理这个覆盖层的生成,如下所示:

@overlay.on('close', someFunction)

然而,我根本不知道该怎么做。有什么建议吗?

您可以使用主干从视图触发事件

removeOverlay: ->
  @$('.overlay').remove()
  @trigger('close')