2011-01-23 72 views
12

我試圖建立一個項目列表(例如,書籍),然後我想允許用戶過濾這個列表(例如通過作者)。我希望列表中的每個項目都有它自己的視圖,並且列表本身也會有一個視圖。然而,我似乎無法「看到」這些如何在Backbone中融合在一起。視圖內的視圖?如何使用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的「過濾器」方法按作者過濾書籍? – 2011-01-25 22:09:56