观点内的意见?如何使用Backbone.js生成项目列表?

时间:2011-01-23 20:21:14

标签: backbone.js coffeescript

我正在尝试构建项目列表(例如书籍),然后我想允许用户过滤此列表(例如,通过作者)。我希望列表中的每个项目都有自己的视图,列表本身也会有一个视图。然而,我似乎无法“看到”这些在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>元素,以便我可以按作者过滤它们。

1 个答案:

答案 0 :(得分:11)

虽然以这种方式编写它当然是可能的,但是如果你有嵌套视图嵌套模板的模板,那么事情会变得复杂......无穷无尽......

相反,为什么不将您的图书视图插入列表:

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