javascript - 创建关闭事件以从自定义叠加层发出

标签 javascript ruby-on-rails ruby-on-rails-3 backbone.js coffeescript

所以我有一个使用 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/

相关文章:

ruby-on-rails - Rails sanitize 删除默认允许的标签

javascript - 如何测试 $rootScope.$emit 事件的动态名称?

javascript - window.opener 替代品

ruby-on-rails - RoR 3.2 设计 (3.2.2) :timeoutable not working

ruby-on-rails - 在 where 子句中减去

ruby-on-rails-3 - 即使用户未登录,如何设置 'current_user'? - 导轨 3

javascript - 初始化 JavaScript 对象数组及其属性的好方法?

javascript - 如何使我的联系表有效?

ruby-on-rails - 如果选择存在,不要创建嵌套表单

ruby-on-rails-3 - 如何使用带有 devise 和 omniauth 的动态范围