2013-02-13 9 views

Antwort

59

Es ist ein Syntaxfehler in dem Beispiel. Die korrekte Syntax lautet {{@../index}}.

Wir suchen nach Möglichkeiten, wie wir die benutzerdefinierte Benennung dieser Parameter in zukünftigen Versionen der Sprache unterstützen können, so dass dies einfacher zu handhaben ist. https://github.com/wycats/handlebars.js/issues/907

+1

Die als richtig markierte Antwort ist trotzdem hilfreich, aber das ist die richtige Antwort auf die Frage. –

+0

oh sieht aus wie das war die erste tatsächliche Antwort, meine schlechte –

+1

Dies funktioniert nicht in Ember v2.2.0. @Andrew Toy hat die richtige Antwort. –

26

Das ist für mich gearbeitet:

{{#each company}} 
{{setIndex @index}} 
{{#each employee}} 
    {{../index}} 
{{/each}} 
{{/each}} 

JS:

Handlebars.registerHelper('setIndex', function(value){ 
    this.index = Number(value + 1); //I needed human readable index, not zero based 
}); 

Stellen Sie sicher, dass das company Objekt keine index Eigenschaft hat.

+1

Leider scheint dies nicht zu funktionieren, wenn die innere Schleife aus einer Vorlage gerendert wird: '' {{> meine-Vorlage}} '' '' Kann Eigenschaft 'Index' von undefined'' nicht lesen. Kennst du eine Lösung dafür? – Lincoln

+1

@Lincoln können Sie die Vorschläge hier versuchen http://StackOverflow.com/A/18026063/271442 - Ich ging für die Include-Helper-Ansatz. – mynameistechno

+0

Das ist ein toller Trick. Ich werde einen Link teilen. Vielen Dank! –

0

Registe eine Helper-Methode:

Handlebars.registerHelper('eachWithIndex', function(cursor, options) { 
    var fn = options.fn, inverse = options.inverse; 
    var ret = ""; 
    var idx = -1; 
    //console.log(cursor); 
    cursor.forEach(function(item){ 
     idx++; 
     console.log(item.index); 
     item.index = idx; 
     ret+=fn(item); 
    }); 
    return ret; 
}); 

Lenker Vorlage:

{{#eachWithIndex outer}} 
    {{#each inner}} 
    {{../index}} // access outer index like this. I used hanlebars V1.3.0 
    {{index}} // access inner index 
    {{/each}} 
{{/eachWithIndex}} 
7

Antwort:{{@../index}}

Vom Handlebars docs (siehe unten 'jeder' Helfer Abschnitt):

„Nested each blockiert die interation Variablen über depted Pfade zugreifen Für den Zugriff auf die. B. {{@../index}} kann verwendet werden. "

HINWEIS: Ich benutze v1.3, so ist es mindestens so alt.

ERINNERUNG: Helfer sind Ihre letzte beste Option. 9/10 gibt es eine bessere Lösung.

+0

das ist die tatsächliche Antwort –

+0

{{@key}} wird es auch in älteren Versionen unterstützt? – ajayv

3

Es scheint, als gäbe es eine neue Syntax in Ember v2.2.0. Ich habe alle Antworten hier versucht und sie haben nicht für mich gearbeitet.

Was ich herausgefunden habe, war die Benennung des Index der Elternschleife und des Index der Kindschleife.

Verwandte Themen