2012-06-28 20 views
5
events: 
    'click textarea': 'composeComment' 
    'click .submit': 'submit' 
    'blur textarea': 'textareaBlur' 
    'resize article': 'repositionBoards' 


repositionBoards: -> 
    #this is my own function, i just need it to be called everytime an article's size changes 
    board.align() 

如何获取调用resize事件的方法repositionBoards如何将调整大小事件添加到骨干中的文章?

回答

8

resize event发送到window:当浏览器窗口大小的变化

但一个骨干视图的事件被绑定到视图的

resize事件被发送到window元素el使用delegate。该视图的el将不会得到resize事件,因此将'resize articule': 'repositionBoards'放入您的视图的events将无济于事。

如果你需要在视图中获得resize事件,你必须把它自己绑定到window

initialize: (options) -> 
    $(window).on('resize', this.repositionBoards) 
remove: -> 
    $(window).off('resize', this.repositionBoards) # Clean up after yourself. 
    @$el.remove() # The default implementation does this. 
    @ 
repositionBoards: -> 
    # Use => if you need to worry about what `@` is 
    board.align() 

还要注意添加remove的,这样就可以解除绑定您的resize处理程序。当然,您将使用view.remove()删除您的视图,或者如果该视图是您的整个应用程序,请不要担心。

+0

谢谢你的详细解答。 我唯一担心的是,当文本输入到文章中时,我的文章大小会发生变化。当尺寸扩大时,我想调用复位板。但是,由于调整大小被发送到窗口,这对我没有好处。 您是否知道是否有任何事件可能与文章或div的大小调整有关?就在它像高度或宽度增加时一样膨胀。 再次感谢。 –

+0

@ user1489926:但是除了窗口之外,其他任何东西都没有调整大小的事件,AFAIK你必须这么做:http://stackoverflow.com/q/172821/479863 –

相关问题