javascript - 在 Handlebars.js 中实现循环标签

标签 javascript templates handlebars.js client-side-templating

在 Django 中有一个名为 cycle 的模板标签:https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#cycle

一个例子:

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

输出:

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

如何在 Handlebars.js 中实现此类功能?

最佳答案

我在 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}}

关于javascript - 在 Handlebars.js 中实现循环标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526008/

相关文章:

javascript - 在javascript中存储唯一值的数据结构

c++ - 不明确的模板参数

javascript - 使用 Handlebars.js 设置 id

JavaScript、AngularJS - 发送多个同时的 ajax 调用

javascript - slider 滑动多次

javascript - 更改 javascript (jquery) 中的日期格式

c++ - 通用 Lambda 之间的差异

c++ - 如何为模板类的成员函数定义静态数组?

node.js - 如何通过布局使用快速 Handlebars 中的侧边栏和主要内容

handlebars.js - else if 的 Handlebars js 自定义助手