你.filter()之后怎么从.pluck()中获取值?

时间:2011-08-16 08:38:47

标签: backbone.js

window.CardList = Backbone.Collection.extend(...);

var Cards = new CardList;

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

是否有一种干净的方法来过滤集合然后采集值?我知道的唯一工作是重新初始化集合:

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

或者在输出过滤后映射输出:

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

这看起来很奇怪,因为它有一个非常好的.pluck()方法

3 个答案:

答案 0 :(得分:6)

CardList是一个骨干集合,一旦被过滤或拔出,它就变成了一个骨干模型阵列。

除非你将它包装在另一个主干集合中(这是原帖提到的),否则无法再次采集一系列骨干模型。

替代方式是:

  1. 用下划线包裹并链接它:_(Cards.filter(...))。chain()。pluck('attributes')。pluck('value')。value()

  2. 只需绘制出值(我最终使用此解决方案,最终是最干净的):

  3. _.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');