In meteor is there a way to access array index in spacebars [duplicate]

I am using meteor Shark branch.

Is there a way to access array index inside each block helper in spacebars?

I am looking for something like this.

{{#each humans}}
  {{this.arrayIndex}}
{{/each}}

Answers:

Answer

As taken from the spacebars documentation:

You can use a special variable @index in the body of #each to get the 0-based index of the currently rendered value in the sequence.

Answer

In Meteor 1.0.2.1, you can do the following:

{{#each humans}}
  {{this}}
{{/each}}

This is because #each iterates through the array, making the this in each loop simply equal to the current value.

Answer

meteor >= 1.2

Spacebars gained a lot of functionality in 1.2, including a native @index. Helpers are no longer needed to solve this problem - you can simply do this:

<template name="showHumans">
  <ul>
    {{#each humans}}
      <li>{{@index}}: {{name}}</li>
    {{/each}}
  </ul>
</template>

meteor < 1.2

I saw a similar example using template helpers in the meteor book in the "animations" chapter. You can apply a map to the humans cursor in order to add an index like so:

Template.showHumans.helpers({
  humans: function() {
    return Humans.find({}, {sort: {hotness: -1}}).map(function(human, index) {
      human.rank = index;
      return human;
    });
  }
});
<template name="showHumans">
  <ul>
    {{#each humans}}
      <li>{{rank}}: {{name}}</li>
    {{/each}}
  </ul>
</template>

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.