2011-01-23 17 views
12

Öğelerin bir listesini oluşturmaya çalışıyorum (örn. Kitaplar) ve daha sonra kullanıcının bu listeyi filtrelemesine izin vermek istiyorum (ör. Yazar tarafından). Listedeki her öğenin kendi görüşüne sahip olacağını ve listenin kendisinin de bir manzaraya sahip olacağını umuyorum. Ancak, bunların Backbone'da nasıl birbirine uyduğunu göremiyorum. Ben anlamak istiyorum neGörüntüleme sayısı Views? Backbone.js ile öğe listeleri nasıl oluşturulur?

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

o kendi bakış + şablonun yüzden can ile listedeki her <li> öğe oluşturmak için yapılması gerekenler: (coffeescript) aşağıdaki gibi

Şu anda, benim kodudur onları yazara göre filtreleyin.

cevap

11

o bu şekilde yazmaya kesinlikle mümkün olsa şablonları varsa, işler dolambaçlı alabilirsiniz yuvalama görünümler yuvalama şablonlar sonsuza ...

Bunun yerine, listeye Kitap görüşlerini insert neden:

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

Teşekkürler! Kitapları yazarlara göre filtrelemek için Underscore'un 'filtre' yöntemlerinden biri nasıl kullanılır? –

+0

Ayrıca, bir şablonun iç içe geçtiği bir görünümü yuvalayan bir şablonun nasıl yazılacağını gösteren bir örnek verebilir misiniz? Sadece böyle bir yapıya ulaşmak istendiğinde - gerçek kullanımdan ziyade öğrenme amaçları için. :) –

+0

<%= renderTemplate(moreData) %>
jashkenas