Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建要从自定义覆盖发射的关闭事件_Javascript_Ruby On Rails_Ruby On Rails 3_Backbone.js_Coffeescript - Fatal编程技术网

Javascript 创建要从自定义覆盖发射的关闭事件

Javascript 创建要从自定义覆盖发射的关闭事件,javascript,ruby-on-rails,ruby-on-rails-3,backbone.js,coffeescript,Javascript,Ruby On Rails,Ruby On Rails 3,Backbone.js,Coffeescript,所以我有一个rails应用程序,使用backbone.js和coffeescript。我创建了一个称为“覆盖”的主干视图,它如下所示: class MyApp.Views.Overlay extends Backbone.View template: JST['overlay'] contentDiv: -> $('.overlay-content') initialize: (options) -> @content = options.conte

所以我有一个rails应用程序,使用backbone.js和coffeescript。我创建了一个称为“覆盖”的主干视图,它如下所示:

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 = new MyApp.Views.Overlay(el: 'body', content: 'some content)
@overlay.render()
这是非常简单的,本质上你可以传递一些任意的字符串或html来在叠加中呈现,它会给主体添加一个很好的lil叠加

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

@overlay.on('close', someFunction)

然而,我一点也不知道该怎么做。有什么建议吗?

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

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

一、 首先,我不完全清楚你想做什么。您能详细介绍一下最后几句话吗?如果您想使用jQuery的事件委派来处理诸如“close”之类的自定义事件,您还需要使用jQuery触发事件:
removeOverlay: ->
  @$('.overlay').remove()
  @trigger('close')