我有一个名为Players
的顶级Collection和一个名为'n'的Session变量。除了我的顶级系列之外,我还想根据Players
创建一个顶级'{n} player.points
的集合,该集合会根据Session.set('n', n)
更新(和,当然,任何更改基础Players
数据。)
我想要TopNPlayers
的原因是因为在每个播放器模板中(称之为Template.player_item
)我想提供几个变量:
Template.player_item.isInTopN
,设置一个CSS类来突出显示一个玩家,如果它位于顶部的'n'点中Template.player_item.PointsVsBaseline
,它给出了该玩家的分数与TopNPlayers
中的第n个玩家之间的差异。由于我不想手动管理包含Players
的全局变量,该变量按Session.get('n')
的值过滤,我当然不希望每次都计算top-'n'渲染另一个player_item
,我想设置Players
集合的额外订阅。
答案 0 :(得分:1)
我不确定你需要一个单独的集合,光标是不是可以做到这一点?
类似的东西:
var topNPlayers = function() {
return Players.find({}, {limit: Session.get('n')});
}
Template.player_item.isInTopN = function() {
// there are a bunch of ways you could do this step...
_.include(topNPlayers().fetch(), this);
}