有没有办法获得我在Meteor集合中的项目编号列表的“数字”。我知道我可以在html中完成它,但我觉得如果我可以在{{spacebars}}中放弃一些内容,那么风格会更容易。如果我可以使用更好的术语,请告诉我。这样的事情。
前20部电影列表:
{{#each movie}}
Movie #{{number}} {{movie_name}} {{review_score}}
{{/each}}
答案 0 :(得分:1)
我没有正确理解你的问题,我也不太了解 Meteor-Collections ,但一般来说,如果你遍历一个数组并希望得到每个元素的索引,你可以通过以下方式轻松完成:
[1,2,3].forEach(function(e,i){ console.log(i+":"+e); })
0:1
1:2
2:3
请参阅MDN了解forEach()。
答案 1 :(得分:1)
pull request 可以完全符合您的要求:
{{#each movie}}
{{@index}}{{movie}}
{{/each}}
在他们合并之前,您可以使用其他方法:
How can I get the index of an array in a Meteor template each loop?
答案 2 :(得分:1)
使用Underscore.js中的“地图”尝试。
我希望你的“电影”系列中有电影,它们看起来像这样:
{
title: "Shawshank Redemption",
score: 92
},
{
title: "Forrest Gump",
score: 96
},
{
title: "Green Mile",
score: 91
},
{
title: "The Godfather",
score: 95
}
......等等......
这是“yourTemplate”辅助函数:
Template.yourTemplate.helpers({
movie: function () {
var loadMovies = Movie.find({}, {sort: {score: -1}, limit: 20}).fetch(); // added descending sorting by review score
var array = _.map(loadMovies, function(movie, index) {
return {
number: index+1, // incrementing by 1 so you won't get 0 at the start of the list
movie_name: movie.title,
review_score: movie.score
};
});
return array;
}
});
现在您可以在模板中使用它,如下所示:
<template name="yourTemplate">
{{#each movie}}
Movie #{{number}} {{movie_name}} {{review_score}}
{{/each}}
</template>