2011-01-23 8 views
12

私はアイテムのリスト(例:本)を作成しようとしています。このリストをフィルタリングすることを許可したいと思います。私は、リスト内の各項目には独自のビューがあり、リスト自体にもビューがあることが期待されます。しかし、これらがバックボーンにどのように適合するかを「見る」ようには思えません。ビュー内の再生回数は? Backbone.jsでアイテムのリストを生成するには?

現在、次のように私のコードがある(コーヒースクリプト):私は理解したいのですがどのような

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>要素を作成する方法であります著者によってフィルタリングしてください。

答えて

11

それはそのように書くことは確かに可能ですが、あなたがテンプレートを持っている場合、物事は複雑得ることができるネスティングビューネスティングテンプレート、無限に...

代わりに、リストにあなたの帳のビューを挿入しない理由:

render: -> 
    $(this.el).html this.template() 
    bookHTML = for book in Books 
    (new BookView model: book).render().el 
    this.$('.book_list').append bookHTML 
+0

ありがとうございます! Underscoreの 'filter'メソッドを使って、著者が本をフィルタリングする方法は? –

+0

また、実際にテンプレートを作成してテンプレートを入れ子にしたビューを入れ子にする方法の例を挙げることができますか?そのような構造を実際に実現したかった場合に備えて、実際の使用よりも学習目的の方が多くなりました。 :) –

+0

<%= renderTemplate(moreData) %>
jashkenas

関連する問題