2013-10-27 1 views
0

Если я нажму ссылку в представлении списка моего базового приложения, то одно представление будет отображаться так, как должно. Работает взад и вперед по истории браузера. Но если я перезагрузите страницу (единственный вид) в браузере или введите URL-адрес в это отдельное представление вручную, это не сработает. Тогда коллекция не содержит никакой модели. Как я могу получить эту конкретную модель, необходимую для создания единого представления в этом случае? СпасибоМассивный однократный просмотр не работает после перезагрузки страницы

main.coffee

class window.MovieSingleView extends Backbone.View 
    tagName: 'div' 
    className: 'row' 

    initialize: -> 
     @template = _.template ($ '#movie-single-view-template').html() 

    render: -> 
     that = @ 

     @model.deferred.done -> 
     ($ that.el).html(that.template that.model.toJSON()) 

     @ 

    class window.Router extends Backbone.Router 
    routes: 
     '': 'index' 
     'movies/:id': 'movieSingleView' 

    initialize: -> 
     @collection = new Movies() 
     @collection.fetch 
     reset: true 

    index: -> 
     moviesView = new MoviesView 
     # collection: window.movies 
     collection: @collection 

     ($ '#container') 
     .empty() 
     .append moviesView.render().el 

    movieSingleView: (id) -> 
     # movie = window.movies.get id 
     # decoratedMovie = new DecoratedMovie movie 

     movie = @collection.get id 
     decoratedMovie = new DecoratedMovie movie 

     movieSingleView = new MovieSingleView 
     model: decoratedMovie 

     ($ '#container') 
     .empty() 
     .append movieSingleView.render().el 

    $ -> 
    window.app = new Router() 

    Backbone.history.start 
     pushstate: true 

    # window.movies.fetch 
    # reset: true 

index.html

<script type="text/template" id="movie-view-template"> 
    <td><%= _year %></td> 
    <td><a href="#/movies/<%= _id %>"><%= _title %></a></td> 
    <td><%= _watched %><td> 
    <td><span class="glyphicon glyphicon-remove pull-right remove"></span></td> 
</script> 

ответ

1

Ваше единое представление оказывает, прежде чем ваша коллекция закончила выборки. Таким образом, вам нужно только отобразить представление после завершения коллекции!

Смежные вопросы