每个把手都有一个自定义的起点

Handlebars each from a custom start point

本文关键字:自定义 起点 有一个      更新时间:2023-09-26

假设我有一个对象

      {
        "empID": "1002729041",
        "empName": "ABHIJIT AUDHYA"
      },
      {
        "empID": "1004563331",
        "empName": "ABDUL MULLA"
      },
      {
        "empID": "1004703190",
        "empName": "ABDUL RAZIC"
      },
      {
        "empID": "1004912437",
        "empName": "ABDUL HAFEEZ"
      }  

我可以使用手把循环通过整个物体使用,

{{#each myObj}}
  <li>{{empName}}</li>
{{/each}}  

比方说,我想从第三个对象开始,忽略第一个和第二个。有没有一种简单的方法可以实现这一点?

不,您需要一个助手:handlers.js{{#if}}条件中的逻辑运算符

所以你可以做一些类似if index > 2 then show content的事情。

如果我可能会问:为什么不在调用模板之前,在实际的javascript中删除前两个(或者说:任何不需要的元素)呢?

编辑:给你。。。

Handlebars.registerHelper('eachFrom', function(context, count, options) {
    var ret = "";
    
    context.slice(count).forEach(function(elem) {
        ret += options.fn(elem);
    });
    
    return ret;
});
var context = {
    myObj: [{
        "empID": "1002729041",
            "empName": "ABHIJIT AUDHYA"
    }, {
        "empID": "1004563331",
            "empName": "ABDUL MULLA"
    }, {
        "empID": "1004703190",
            "empName": "ABDUL RAZIC"
    }, {
        "empID": "1004912437",
            "empName": "ABDUL HAFEEZ"
    }]
};
var source = $("#entry-template").html();
var template = Handlebars.compile(source);
$("#container").append(template(context));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/handlebarsjs/3.0.3/handlebars.min.js"></script>
<script id="entry-template" type="text/x-handlebars-template">
    <ul>
        {{#eachFrom myObj 3}}
          <li>{{empName}}</li>
        {{/eachFrom}}
    </ul>
</script>
<div id="container"></div>