2011-08-16 36 views
5
window.CardList = Backbone.Collection.extend(...); 

var Cards = new CardList; 

Cards.filter(...).pluck('values') 

是否有一種乾淨的方式來過濾集合,然後採集值?唯一的解決辦法,我知道是重新初始化集合:你在.filter()之後如何從集合中獲得.pluck()值?

new CardList(Cards.filter(...)).pluck('values') 

或輸出映射它被過濾後:

Cards.filter(...).map(...) 

這似乎不可思議,因爲它有一個非常好的.pluck()方法

回答

6

CardList一個主幹集合,一旦它被過濾或拔除,它就成爲一個主幹模型陣列。

骨幹模式的磁盤陣列不能被再次pluck'ed,除非你把它包在另一個骨幹集合(這是原帖中提到的)

兩種方式是:

  1. 把它包()。()。(cards.filter(...))。chain()。pluck('attributes')。pluck('value')。value()

  2. 只需繪製出值我結束了使用這個解決方案,它最終是最乾淨的):

_.map(Cards.filter(...), function(m) { return m.get('value') }) 
0
Cards.pluck.call({models: Cards.filter(...)}, 'values'); 
4

清潔還是:

_.invoke(Cards.filter(...), 'get', 'value') 
相關問題