Question

Je suis en train de construire une liste d'articles (par exemple. Livres) et je voudrais permettre alors l'utilisateur de filtrer cette liste (par exemple. Par l'auteur). Je me attends à ce que chaque élément de la liste aurait son propre point de vue, et que la liste elle-même serait également une vue. Je ne peux pas sembler « voir » comment ceux-ci se emboîtent dans la structure centrale, cependant.

À l'heure actuelle, mon code est le suivant (café-script):

class Book extends Backbone.Model

class BookList extends Backbone.Collection
  model: Book
  url: "/library/books.json"

books = new BookList

class BookListView extends Backbone.View
  initialize: ->
    @template = _.template('''
      <ul>
        <% books.each(function(book){ %>
          <li><%= book.get('title') %>, <%= book.get('author') %></li>
        <% }); %>
      </ul>
    ''')
    @render

  render: ->
    template = @template
    books.fetch success: -> jQuery("#books").html(template({'books': books}))

Ce que je voudrais comprendre comment créer chaque élément de <li> dans la liste avec son propre point de vue + modèle afin que je puisse les filtrer par l'auteur.

Était-ce utile?

La solution

Bien qu'il soit certainement possible d'écrire cette façon, les choses peuvent se contournés si vous avez des modèles vues de nidification modèles de nidification, ad infinitum ...

Au lieu de cela, pourquoi ne pas insérer vos vues livre dans la liste:

render: ->
  $(this.el).html this.template()
  bookHTML = for book in Books
    (new BookView model: book).render().el
  this.$('.book_list').append bookHTML
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top