视图中的视图?如何使用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