In Spacebars, how to enter data between iterations

2019-07-16 05:19发布

问题:

I'm using Spacebars and Meteor 1.2. In {{#each post}}, how to enter data after a specific iteration. For example after the second iteration.

Example: 1º iteration | 2º iteration | data | 3º iteration | 4º iteration ...

回答1:

Firstly, convert your cursor to an array and add an index attribute. You're also going to need a helper to check equality (or to tell you when the conditions are right to display something different):

Template.myTemplate.helpers({
  post: function(){
    var cursor = Posts.find({}); // whatever your query is   
    var array = _.map(cursor, function(doc, index) {
      doc.iteration = index + 1; // add an 'iteration' key starting at 1 instead of 0
      return doc;
    });
    return array;
  },
  equals: function(a,b){ // determine equality of a and b for use in spacebars
    return a==b;
  }
});

Then in your html template:

<template name="myTemplate">
  {{#each post}}
    Title: {{title}}
    {{#if equals iteration 2}} Second iteration {{/if}}
  {{/each}}
</template>