2014-11-02 167 views
0

我已經使用Backbone創建了一個Rails應用程序,但是我遇到了一個很小但令人討厭的問題。當用戶轉到他的配置文件,然後返回到首頁時,首頁是空的,我必須刷新它才能顯示骨幹視圖的內容。刷新頁面以查看內容

在我Movieseat.Routers.Movieseats我:

routes: 
    '': 'index' 

initialize: -> 
    @movieSeats = new Movieseat.Collections.Movieseats() 
    @movieSeats.fetch() 

    @searchResults = new Movieseat.Collections.Moviesearch() 

index: -> 
    view = new Movieseat.Views.MovieseatsIndex(collection: @movieSeats) 
    $('#container').html(view.render().el) 

爲什麼用戶需要刷新看到頭版的任何想法?

+0

是您'index'路由器獲取調用?配置文件頁面是否通過Backbone處理? – 2014-11-02 21:06:25

+0

沒有配置文件頁面只是一個Rails頁面。不會'view = new Movieseat.Views.MovieseatsIndex(collection:@movieSeats) $('#container')。html(view.render()。el)'這會創建一個新的視圖實例並將其渲染爲容器時索引頁面被加載? – 2014-11-02 21:13:10

+0

你的索引被調用了嗎?一切正常嗎? – 2014-11-02 21:37:31

回答

0

我不知道CoffeeScript,但fetch()方法需要成功的回調,您可以確保集合已加載。在您的索引中,您正在創建一個通過@movieSeats集合的新視圖,但該集合可能有而不是此時已加載。請嘗試以下操作:

{ 
    routes: { 
    '': 'index' 
    }, 

    initialize: function() { 
    this.movieSeats = new Movieseat.Collections.Movieseats(); 
    }, 

    index: function() { 
    var self = this, view; 

    this.movieSeats.fetch({ 
     success: function(collection) { 
     view = new Movieseat.Views.MovieseatsIndex({ collection: collection }) 
     $('#container').html(view.render().el) 
     } 
    }); 
    } 
} 

但是,您可能希望像骨幹文檔所示,以「引導」您的收藏:http://documentcloud.github.io/backbone/#FAQ-bootstrap

+0

我試過了你的方法,但是當我重新訪問主頁時它仍然不顯示視圖。我會嘗試如果我可以使用'bootstrap'方法。 – 2014-11-05 09:27:15