我正在尝试构建项目列表(例如书籍),然后我想允许用户过滤此列表(例如,通过作者)。我希望列表中的每个项目都有自己的视图,列表本身也会有一个视图。然而,我似乎无法“看到”这些在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>
元素,以便我可以按作者过滤它们。
答案 0 :(得分:11)
虽然以这种方式编写它当然是可能的,但是如果你有嵌套视图嵌套模板的模板,那么事情会变得复杂......无穷无尽......
相反,为什么不将您的图书视图插入列表:
render: ->
$(this.el).html this.template()
bookHTML = for book in Books
(new BookView model: book).render().el
this.$('.book_list').append bookHTML