如何在骨干文章中添加resize事件?

wed*_*ava 5 coffeescript backbone.js backbone-events

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()
Run Code Online (Sandbox Code Playgroud)

如何repositionBoards在调整大小事件时调用我的方法?

mu *_*ort 8

resize活动将发送至window:

resize事件被发送到window元件时的浏览器窗口的尺寸改变

但是Backbone视图的事件与视图的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()
Run Code Online (Sandbox Code Playgroud)

另请注意添加一个,remove以便您可以取消绑定您的resize处理程序.当然,您将要使用view.remove()删除视图,或者如果该视图是您的整个应用程序,则不要担心.