Samstag, Februar 22, 2020

Wie bekommt man den Index in Lenker jedes Helfers?

Ich bin mit LENKER für Template in mein Projekt. Gibt es eine Möglichkeit, um den index der aktuellen iteration ein „jeder“ Helfer im LENKER?

<tbody>
     {{#each item}}
         <tr>
            <td><!--HOW TO GET ARRAY INDEX HERE?--></td>
            <td>{{this.key}}</td>
            <td>{{this.value}}</td>
         </tr>
     {{/each}}
</tbody>
Kommentar zu dem Problem
Sie können sich registrieren, Ihre eigenen Helfer, um dies zu tun, zum Beispiel: gist.github.com/1048968 oder: pastebin.com/ksGrVYkz Kommentarautor: stusmith
Ich fügte hinzu, eine andere Lösung, um das Wesentliche Beispiel, das funktioniert mit handlebars-1.0.rc.1.js. gist.github.com/1048968#gistcomment-617934 Kommentarautor: mlienau

InformationsquelleAutor der Frage thunderboltz | 2012-08-09

5 Kommentare

  1. 463

    In den neueren Versionen von LENKER index (oder Schlüssel im Fall der Objekt-iteration) wird standardmäßig mit dem standard jeden Helfer.


    Ausschnitt aus : https://github.com/wycats/handlebars.js/issues/250#issuecomment-9514811

    Den index des aktuellen array-Element ist bereits seit einiger Zeit via @index:

    {{#each array}}
        {{@index}}: {{this}}
    {{/each}}

    Für Objekt iteration durch die Verwendung von @ – Taste statt:

    {{#each object}}
        {{@key}}: {{this}}
    {{/each}} 

    InformationsquelleAutor der Antwort ro60

  2. 19

    Sich das geändert hat in den neueren Versionen von Ember.

    Für arrays:

    {{#each array}}
        {{_view.contentIndex}}: {{this}}
    {{/each}}

    Wie es aussieht ist die #jeder block funktioniert nicht mehr auf Objekte. Mein Vorschlag ist, Rollen Sie Ihre eigenen helper-Funktion für Sie.

    Vielen Dank für diese Tipp.

    InformationsquelleAutor der Antwort Ryan Lewis

  3. 12

    Ich weiß, das ist zu spät. Aber ich löste dieses Problem mit folgenden Code:

    Java-Script:

    Handlebars.registerHelper('eachData', function(context, options) {
          var fn = options.fn, inverse = options.inverse, ctx;
          var ret = "";
    
          if(context && context.length > 0) {
            for(var i=0, j=context.length; i<j; i++) {
              ctx = Object.create(context[i]);
              ctx.index = i;
              ret = ret + fn(ctx);
            }
          } else {
            ret = inverse(this);
          }
          return ret;
    }); 

    HTML:

    {{#eachData items}}
     {{index}} //You got here start with 0 index
    {{/eachData}}

    wenn Sie möchten, starten Sie Ihren index mit 1, die Sie tun sollten folgenden code:

    Javascript:

    Handlebars.registerHelper('eachData', function(context, options) {
          var fn = options.fn, inverse = options.inverse, ctx;
          var ret = "";
    
          if(context && context.length > 0) {
            for(var i=0, j=context.length; i<j; i++) {
              ctx = Object.create(context[i]);
              ctx.index = i;
              ret = ret + fn(ctx);
            }
          } else {
            ret = inverse(this);
          }
          return ret;
        }); 
    
    Handlebars.registerHelper("math", function(lvalue, operator, rvalue, options) {
        lvalue = parseFloat(lvalue);
        rvalue = parseFloat(rvalue);
    
        return {
            "+": lvalue + rvalue
        }[operator];
    });

    HTML:

    {{#eachData items}}
         {{math index "+" 1}} //You got here start with 1 index
     {{/eachData}}

    Dank.

    InformationsquelleAutor der Antwort Naitik

  4. 8

    In der LENKER-version 3.0,

    {{#each users as |user userId|}}
      Id: {{userId}} Name: {{user.name}}
    {{/each}}

    In diesem bestimmten Beispiel, der Benutzer muss den gleichen Wert wie den aktuellen Kontext und Benutzer-id wird der index-Wert für die iteration.
    Siehe – http://handlebarsjs.com/block_helpers.html in block Helfer Abschnitt

    InformationsquelleAutor der Antwort kumkanillam

  5. 3

    Arrays:

    {{#each array}}
        {{@index}}: {{this}}
    {{/each}}

    Wenn Sie arrays von Objekten… Sie Durchlaufen die Kinder:

    {{#each array}}
        //each this = { key: value, key: value, ...}
        {{#each this}}
            //each [email protected] and value=this of child object 
            {{@key}}: {{this}}
            //Or get index number of parent array looping
            {{@../index}}
        {{/each}}
    {{/each}}

    Objekte:

    {{#each object}}
        {{@key}}: {{this}}
    {{/each}} 

    Wenn Sie verschachtelte Objekte können Sie auf die key des übergeordneten Objekts mit
    {{@../key}}

    InformationsquelleAutor der Antwort developer

Kostenlose Online-Tests