2

所以我有一个使用backbone.js和coffeescript的rails应用程序。我创建了一个名为 “叠加”,看起来像这样的骨干观点:创建关闭事件以自定义覆盖图发射

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来在覆盖图中渲染,并且它为body添加了一个漂亮的lil覆盖图。

我所试图做的是在处理这个叠加的生成,像这样的观点写一些代码:

@overlay.on('close', someFunction) 

不过,我一点也不知道知道如何去这样做。有什么建议么?

+1

我触发事件,一,我不完全清楚你正在尝试做的。你可以扩展你的最后几句话吗? – RustyToms

+1

如果您想使用jQuery的事件委托来处理像“close”这样的自定义事件,那么您还需要使用jQuery来触发事件:http://api.jquery.com/trigger/ – kinakuta

回答

1

您可以使用骨干从视图

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