How to find Array length inside the Handlebar templates?

后端 未结 4 1013
误落风尘
误落风尘 2021-02-01 11:43

I have a Handlebars template which is rendered using a json object. In this json I am sending an array. Like this:

var json = {
               \"array\":[\"abc\"         


        
相关标签:
4条回答
  • 2021-02-01 12:15

    You can define simple helper to handle it:

    Handlebars.registerHelper('get_length', function (obj) {
     return obj.length;
    });   
    

    And then use it in your template eg:

    {{get_length some_object}}
    
    0 讨论(0)
  • 2021-02-01 12:22

    In this case you need to reference the parent variable of the each from within the each block:

    {{#each array}}
        {{../array.length}}
    {{/each}}
    

    I think your variable being named "array" is probably conflating the issue as well. Let's assume some different JSON just to clarify:

    var json = {
        "fruit":["apple","orange","banana"]
    };
    

    So then doing this:

    <ul>
        {{#each fruit}}
            <li>{{this}} {{@index}} {{../fruit.length}}</li>
        {{/each}}
    </ul>
    

    Would yield:

    <ul>
        <li>apple 0 3</li>
        <li>orange 1 3</li>
        <li>banana 2 3</li>
    </ul>
    
    0 讨论(0)
  • 2021-02-01 12:26

    My Bad....

    {{array.length}} actually worked inside the template. Should have checked/tested it before posting it here.

    0 讨论(0)
  • 2021-02-01 12:29

    If you are testing for an empty list in order to display content... In Ember.js which uses handlebars, you can have an else for the #each.

    {{#each blah as |blah|}}
    
    {{else}}
     //   If array is empty
    {{/each}}
    
    0 讨论(0)
提交回复
热议问题