2017-08-23 37 views
1

我有一些麻煩,從一個Nunjucks {% for %}循環中獲取數組中的項目的索引。無法獲得與Nunjucks循環中的項目索引

我指定的數組是簡單的,看起來像這樣

pages[1,2,3]

這是Nunjucks循環

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

問題

{{ p }}輸出1,2,3{{ i }}不輸出任何東西。

如果有人能告訴我如何解決這個問題,我會非常感激。提前致謝!

回答

0

Tipally nunjucks等待單個迭代器爲array。 當您使用多迭代器並通過array時,nunjucks通過迭代器集分割每個array元素。

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

可以使用range,轉換陣列到對象(元素順序可能會丟失),或者使用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

感謝響應。我真的希望這將是一個更小的模板修復,而不需要更多的修補Nunjucks配置。 – mikeym