2014-11-02 164 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