视图中的视图?如何使用Backbone.js生成项目列表?

视图中的视图?如何使用Backbone.js生成项目列表?,backbone.js,coffeescript,Backbone.js,Coffeescript,我正在尝试建立一个项目列表(如书籍),然后我想允许用户过滤这个列表(如按作者)。我希望列表中的每个项目都有自己的视图,并且列表本身也有一个视图。然而,我似乎无法“看到”这些在主干中是如何结合在一起的 目前,我的代码如下(咖啡脚本): 类目扩展主干。模型 类BookList扩展主干。集合 型号:书 url:“/library/books.json” 图书=新书目 类BookListView扩展了主干 初始化:-> @template=ux0.template(“”) , ''') @渲染 渲染

我正在尝试建立一个项目列表(如书籍),然后我想允许用户过滤这个列表(如按作者)。我希望列表中的每个项目都有自己的视图,并且列表本身也有一个视图。然而,我似乎无法“看到”这些在主干中是如何结合在一起的

目前,我的代码如下(咖啡脚本):

类目扩展主干。模型
类BookList扩展主干。集合
型号:书
url:“/library/books.json”
图书=新书目
类BookListView扩展了主干
初始化:->
@template=ux0.template(“”)
  • ,
''') @渲染 渲染:-> template=@template books.fetch success:->jQuery(#books”).html(模板({'books':books}))

我想了解的是如何使用自己的视图+模板创建列表中的每个
  • 元素,这样我就可以按作者对它们进行筛选。

    当然可以这样编写,但如果有模板嵌套视图嵌套模板,事情可能会变得复杂,无限

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

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

    谢谢如何使用下划线的
    filter
    方法按作者筛选书籍?books.filter(函数(book){return book.author==expectedAuthor;});这种方法会在每次调用render时泄漏BookView吗?如果是这样的话,如果这些视图引用的模型对象仍然挂在周围并且有效,那么它们是否很难摆脱呢?有人请回答Brett的问题@Brett,@Chetan:AFAIK,只要没有引用
    BookView
    实例(因为它们只用于提取
    el
    属性值),它们就会在下次运行时被垃圾收集。无论
    BookView
    是否引用
    el
    render: ->
      $(this.el).html this.template()
      bookHTML = for book in Books
        (new BookView model: book).render().el
      this.$('.book_list').append bookHTML