【问题标题】:Refresh page to see content刷新页面查看内容
【发布时间】:2014-11-04 16:44:12
【问题描述】:

我使用 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)

知道为什么用户必须刷新才能看到首页吗?

【问题讨论】:

  • 您的index 路由器被呼叫了吗?个人资料页面是否通过 Backbone 处理?
  • 没有个人资料页面只是一个 Rails 页面。 view = new Movieseat.Views.MovieseatsIndex(collection: @movieSeats) $('#container').html(view.render().el) 这不是创建一个新的视图实例并在加载索引页面时将其渲染到容器吗?
  • 你的index被叫了吗?一切都正确设置了吗?

标签: javascript backbone.js coffeescript


【解决方案1】:

我不知道 CoffeeScript,但 fetch() 方法需要一个成功回调,您可以在其中确保集合已加载。在您的 index 中,您正在创建一个传递 @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)
      }
    });
  }
}

但是,您可能希望像 Backbone 文档中显示的那样“引导”您的收藏:http://documentcloud.github.io/backbone/#FAQ-bootstrap

【讨论】:

  • 我试过你的方法,但是当我重新访问主页时它仍然没有显示视图。如果可以使用bootstrap 方法,我将尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 2019-02-07
  • 1970-01-01
  • 2012-09-17
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多