2013-02-13 3 views

risposta

59

C'è un errore di sintassi nell'esempio. La sintassi corretta è {{@../index}}.

Stiamo cercando modi in cui possiamo supportare la denominazione personalizzata di questi parametri nelle versioni future del linguaggio, quindi è più facile gestirli. https://github.com/wycats/handlebars.js/issues/907

+1

La risposta contrassegnata come corretta è comunque utile, ma questa è la risposta corretta alla domanda. –

+0

oh sembra che questa sia stata la prima risposta effettiva, il mio male –

+1

Questo non funziona in ember v2.2.0. @Andrew Toy ha la risposta corretta. –

26

Questo ha funzionato per me:

{{#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 
}); 

Accertati solo che l'oggetto company non abbia la proprietà index.

+1

Purtroppo questo non sembra funzionare se il ciclo interno è reso da un modello: '' {{> my-template}} '' '' rendimenti non può leggere proprietà 'indice' di undefined''. Conosci una soluzione per questo? – Lincoln

+1

@Lincoln puoi provare i suggerimenti qui http://stackoverflow.com/a/18026063/271442 - Sono andato per l'approccio include helper. – mynameistechno

+0

Questo è un trucco fantastico. Condividerò un link jsfiddle. Grazie! –

0

Registe un metodo Helper:

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; 
}); 

manubrio modello:

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

Risposta:{{@../index}}

Dal Handlebars docs (vedi fondo 'ogni' sezione aiutante):

"nidificati each blocchi possono accedere le variabili dell'interazione tramite percorsi depted Per accedere al. indice genitore, ad esempio, è possibile utilizzare {{@../index}}. "

NOTA: sto utilizzando la v1.3 quindi è almeno così vecchia.

PROMEMORIA: gli helper sono la tua ultima opzione migliore. 9/10 c'è una soluzione migliore.

+0

questa è la risposta effettiva –

+0

{{@key}} è supportata anche nella versione precedente? – ajayv

3

Sembra che ci sia una nuova sintassi in Ember v2.2.0. Ho provato tutte le risposte qui e non hanno funzionato per me.

Quello che ho trovato ha funzionato era nominare l'indice del ciclo genitore e l'indice del ciclo figlio.

{{#each parents as |parent parentIndex|}} 
    {{parentIndex}} 
    {{#each children as |child childIndex|}} 
     {{parentIndex}} 
     {{childIndex}} 
    {{/each}} 
{{/each}}