过滤Backbone Collection会返回一组模型

Dru*_*Dru 25 javascript collections backbone.js underscore.js

示例代码:

this.books = this.getBooksFromDatabase();
this.publishedBooks = this.books.filter(function(book) {
  return book.get("isPublished") === "1";
});
Run Code Online (Sandbox Code Playgroud)

这就是问题所在:

this.books.filter,返回一个模型数组.我试过包装数组,如下:

var publishedBooks = _( this.books.filter(function(book) {
  return book.get("isPublished") === "1";
}))
Run Code Online (Sandbox Code Playgroud)

按照这篇文章的建议:https: //github.com/documentcloud/backbone/issues/120

但我仍然无法运行如下:publishedBooks.each(...)或publishedBooks.get(...)

我错过了什么?有没有办法将返回的数组转换为集合?

c3r*_*rin 34

您可以实例化新的骨干集合并传入数组.

var myPublishedBooks = new MyBooksCollection(publishedBooks);
Run Code Online (Sandbox Code Playgroud)

或者您可以刷新原始集合.

this.books.refresh(publishedBooks)
Run Code Online (Sandbox Code Playgroud)

请注意,2011年7月0.5.0版本已重命名refreshreset,因此您可以在较新版本的Backbone中实现此目的;

this.books.reset(publishedBooks)
Run Code Online (Sandbox Code Playgroud)

  • Collection#refresh被重命名为Collection#reset http://documentcloud.github.com/backbone/#Collection-reset (12认同)