2014-10-30 86 views
0

我有一個骨幹視圖,其中我想在視圖初始化時觸發事件resizeMovieFrame。它對$(window).on("load", @resizeMovieFrame)作出反應,因爲'hello'顯示在控制檯中。窗口加載不改變內容

但是,調整大小的代碼不會對加載做任何事情。但是,當我調整我的瀏覽器時,它確實有效。所以我想,當$(window).on("resize", @resizeMovieFrame)被解僱時,沒有任何.movie-frame div可以調整大小。如果是這種情況,那麼propper加載順序是什麼?

class Movieseat.Views.MovieseatsIndex extends Backbone.View 

    template: JST['movieseats/index'] 
    id: 'something' 

    initialize: -> 
    @listenTo @collection, 'change', @renderEntries, this 
    @listenTo @collection, 'add', @renderEntries, this 
    @listenTo @collection, 'destroy', @renderEntries, this 
    $(window).on("resize", @resizeMovieFrame) 
    $(window).on("load", @resizeMovieFrame) 

    render: -> 
    $(@el).html(@template(entries: @collection)) 
    this 

    events: -> 
    "click li": "addEntry" 
    "click .remove": "destroyEntry" 

    addEntry: (e) -> 
    movie_title = $(e.target).parent().find('.movie-title').text() 
    poster_path = $(e.target).parent().find('img').attr('src') 
    release_date = $(e.target).parent().find('.release_date').text() 
    console.log poster_path 
    @collection.create title: movie_title, image: poster_path, release_date: release_date 

    destroyEntry: (e) -> 
    thisid = @$(e.currentTarget).closest('div').parent().data('id') 
    @collection.get(thisid).destroy() 

    renderEntries: (entry) -> 
    view = new Movieseat.Views.Showmovie(collection: @collection) 
    $('#movie-container').html(view.render().el) 

    resizeMovieFrame: -> 
    equalheight = (container) -> 
     currentTallest = 0 
     currentRowStart = 0 
     rowDivs = new Array() 
     $el = undefined 
     topPosition = 0 
     $(container).each -> 
     $el = $(this) 
     $($el).height "auto" 
     topPostion = $el.position().top 
     unless currentRowStart is topPostion 
      currentDiv = 0 
      while currentDiv < rowDivs.length 
      rowDivs[currentDiv].height currentTallest 
      currentDiv++ 
      rowDivs.length = 0 # empty the array 
      currentRowStart = topPostion 
      currentTallest = $el.height() 
      rowDivs.push $el 
     else 
      rowDivs.push $el 
      currentTallest = (if (currentTallest < $el.height()) then ($el.height()) else (currentTallest)) 
     currentDiv = 0 
     while currentDiv < rowDivs.length 
      rowDivs[currentDiv].height currentTallest 
      currentDiv++ 
     return 

     return 

    $(window).load -> 
     equalheight ".movie-frame" 
     return 

    $(window).resize -> 
     equalheight ".movie-frame" 
     return 

    console.log ('hello') 

resizeMovieFrame事件重新調整所有.movie-frame的div到相同的高度。

回答

0

您可能需要綁定resizeWindowFrame函數的上下文。

resizeMovieFrame: =>