2017-08-23 1 views
1

Je rencontre des problèmes pour obtenir des index d'éléments dans un tableau à partir d'une boucle Nunjucks {% for %}.Impossible d'obtenir l'index de l'élément dans le tableau avec Nunjucks pour la boucle

Le tableau que je suis ciblage est simple et ressemble à ce

pages[1,2,3]

Et voici la boucle Nunjucks

{% for i,p in data.tickets.pages %} {{ i }} : {{ p }} {% endfor %}

Le problème

{{ p }} sorties 1,2,3 mais {{ i }} ne sort pas n'importe quoi.

Si quelqu'un peut me dire comment résoudre ce problème, je l'apprécierais beaucoup. Merci d'avance!

Répondre

0

Typiquement nunjucks attendre l'itérateur unique pour array. Lorsque vous utilisez multi-itérateur et passez array, nunjucks séparez chaque élément array par un ensemble d'itérateurs.

{% set pages = [[10, 11], [12, 13]] %} 
{% for a, b in pages %} 
{{a}},{{b}} 
{% endfor %} 
--- 
10:11 
12:13 

Vous pouvez utiliser range, convertir tableau pour objet (ordre d'élément peut être perdu) ou utiliser loop.index0 «/loop.index

var nunjucks = require('nunjucks'); 
var env = nunjucks.configure(); 

// range 
var res = nunjucks.renderString(` 
    {% for i in range(0, items.length) %} 
    {% set item = items[i] %} 
    {{i}}: {{item}} 
    {% endfor %}`, 
    {items: [10, 12]} 
); 

console.log(res); 

// array to object 
res = nunjucks.renderString(` 
    {% for i, item in items %} 
    {{i}}: {{item}} 
    {% endfor %}`, 
    {items: Object.assign({}, [10, 12])} 
); 

console.log(res); 

// loop.index0 
res = nunjucks.renderString(` 
    {% for item in items %} 
    {{loop.index0}}: {{item}} 
    {% endfor %}`, 
    {items: [10, 12]} 
); 

console.log(res); 
+0

Merci pour la réponse. J'espérais vraiment que ce serait une solution plus triviale dans le modèle sans avoir besoin de plus de bricolage avec la configuration de Nunjucks. – mikeym