window.CardList = Backbone.Collection.extend(...);
var Cards = new CardList;
Cards.filter(...).pluck('values')
是否有一种干净的方法来过滤集合然后采集值?我知道的唯一工作是重新初始化集合:
new CardList(Cards.filter(...)).pluck('values')
或者在输出过滤后映射输出:
Cards.filter(...).map(...)
这看起来很奇怪,因为它有一个非常好的.pluck()方法
答案 0 :(得分:6)
CardList是一个骨干集合,一旦被过滤或拔出,它就变成了一个骨干模型阵列。
除非你将它包装在另一个主干集合中(这是原帖提到的),否则无法再次采集一系列骨干模型。
替代方式是:
用下划线包裹并链接它:_(Cards.filter(...))。chain()。pluck('attributes')。pluck('value')。value()
只需绘制出值(我最终使用此解决方案,最终是最干净的):
_.map(Cards.filter(...), function(m) { return m.get('value') })
答案 1 :(得分:4)
清洁工仍然:
_.invoke(Cards.filter(...), 'get', 'value')
答案 2 :(得分:0)
Cards.pluck.call({models: Cards.filter(...)}, 'values');