Embedding a loop tag in Handlebars.js

Django has a template tag called a loop: https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#cycle.

Example:

{% for o in some_list %} <tr class="{% cycle 'row1' 'row2' %}"> ... </tr> {% endfor %} 

Exit:

 <tr class="row1">...</tr> <tr class="row2">...</tr> <tr class="row1">...</tr> <tr class="row2">...</tr> 

How do you implement this type of functionality in Handlebars.js?

+4
source share
2 answers

I found at http://thinkvitamin.com/code/handlebars-js-part-2-partials-and-helpers/

 Handlebars.registerHelper("stripes", function(array, even, odd, fn) { if (array && array.length > 0) { var buffer = ""; for (var i = 0, j = array.length; i < j; i++) { var item = array[i]; // we'll just put the appropriate stripe class name onto the item for now item.stripeClass = (i % 2 == 0 ? even : odd); // show the inside of the block buffer += fn(item); } // return the finished buffer return buffer; } }); {{#stripes myArray "even" "odd"}} <div class="{{stripeClass}}"> ... code for the row ... </div> {{/stripes}} 
+3
source

Here is what I came up with:

 Handlebars.registerHelper('cycle', function(value, block) { var values = value.split(' '); return values[block.data.index % (values.length + 1)]; }); {{#each users}} <tr class="{{cycle 'alternate'}}"> <tr class="{{cycle 'odd even'}}"> {{/each}} 
+2
source

Source: https://habr.com/ru/post/1399285/


All Articles