12

アイテムのリスト(書籍など)を作成しようとしていますが、ユーザーがこのリストを(著者などで)フィルタリングできるようにしたいと考えています。リスト内の各項目には独自のビューがあり、リスト自体にもビューがあると思います。ただし、これらが Backbone でどのように組み合わされるかは「見えない」ようです。

現在、私のコードは次のとおりです(コーヒースクリプト):

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}))

私が理解したい<li>のは、リスト内の各要素を独自のビュー + テンプレートで作成して、作成者でフィルターできるようにする方法です。

4

1 に答える 1

11

そのように書くことは確かに可能ですが、テンプレートをネストするビューがテンプレートをネストしている場合、無限に複雑になる可能性があります...

代わりに、Book ビューをリストに挿入してみませんか。

render: ->
  $(this.el).html this.template()
  bookHTML = for book in Books
    (new BookView model: book).render().el
  this.$('.book_list').append bookHTML
于 2011-01-25T14:42:23.910 に答える