访问Handlebars/Blaze中的收藏索引#每个循环

问题描述:

我正在搞一个Meteor Leaderboard示例。比方说,我想显示一个把手内的项目的索引#each循环:访问Handlebars/Blaze中的收藏索引#每个循环

{{#each players}} 
    {{> player}} 
{{/each}} 

<template name="player"> 
    <div class="player {{selected}}"> 
    <span class="index">{{index}}</span> 
    <span class="name">{{name}}</span> 
    <span class="score">{{score}}</span> 
    </div> 
</template> 

通常一个会写这样的车把帮手,但我有麻烦搞清楚如何得到它的一个工作流星收集。

如何做到这一点?谢谢。

+1

你真的尝试车把助手的方法呢? [这段代码](https://gist.github.com/1371586)为我工作。 – zwippie 2012-04-13 13:16:30

+0

@zwip谢谢你一堆。我曾尝试过,但使用不同的帮手。 – kmurph79 2012-04-15 03:25:25

如果你只是想显示蒙戈生成的ID只使用_id

<span class="id">{{_id}}</span> 

它会显示在集合中的唯一索引ID。它不会很漂亮。

我可能误解了你的问题。对不起,如果我有。

+0

刚刚发现这个!我想要索引,所以它会在播放器旁边显示0,1,2等。基本上是玩家在收藏中的位置。 – kmurph79 2012-04-22 23:59:01

为这个问题添加一个答案。我不得不把一些时间想出来的

在您的客户端

Template.player.data = function(data){

if(type){

return Template[ 'player' ](data);

}

}

在模板

{{#each players}}

{{data this}}

{{/each}}

这将无缝工作。

+0

我得到一个类型未定义的错误,在你的例子中它代表了什么? – Blaise 2014-01-28 17:56:52

下面是我如何解决这个问题 - 而不是一个完美的解决方案 - 通过使用Mongo通常创建的增加值的索引这一事实。

Template.item.index = function() { 
    return Items.find().count() - Items.find({_id: {$lte: this._id}}).count() + 1 
} 

然后我用这个模板中像这样: {{指数}}

希望这有助于!

现在有在大火的@index特点:

{{#each players}} 
    {{> player [email protected]}} 
{{/each}} 

<template name="player"> 
    <div class="player {{selected}}"> 
    <span class="index">{{index}}</span> 
    <span class="name">{{name}}</span> 
    <span class="score">{{score}}</span> 
    </div> 
</template> 

Template.player.helpers({ 
    index() { 
    var data = Template.currentData(); 
    if(data) { 
     return data.index; 
    } 
    } 
});