我正在搞乱Meteor Leaderboard的例子。假设我想在把手#each循环中显示项目的索引:
{{#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>
通常人们会为此编写一个把手助手,但是我无法弄清楚如何使用Meteor集合。
怎么会这样做?谢谢。
答案 0 :(得分:3)
Blaze现在有一个@index功能:
{{#each players}}
{{> player index=@index}}
{{/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;
}
}
});
答案 1 :(得分:0)
如果您只是想显示mongo生成的id,请使用_id
<span class="id">{{_id}}</span>
它将在集合中显示唯一的索引ID。它不会很漂亮。
我可能误解了你的问题。对不起,如果我做了。
答案 2 :(得分:0)
为此问题添加答案。我不得不花几个小时搞清楚
在您的客户
中 Template.player.data = function(data){
if(type){
return Template[ 'player' ](data);
}
}
在您的模板中
{{#each players}}
{{data this}}
{{/each}}
这将无缝地工作。
答案 3 :(得分:0)
通过使用Mongo通常会创建值增加的索引这一事实,我解决了这个问题 - 不是一个完美的解决方案。
Template.item.index = function() {
return Items.find().count() - Items.find({_id: {$lte: this._id}}).count() + 1
}
然后我在模板中使用它,如下所示: {{索引}}
希望这有帮助!