Forum Discussion

PrashantMaheshw's avatar
PrashantMaheshw
Qrew Captain
2 years ago

(Solved) JINJA - Using a Counter inside Loop

TIL , 

PS : I'm aware you can use loop.index but there was scenario involving where I couldn't . 

You cannot use a simple counter variables inside ninja loops. Case in Point

{% set x = 0 %}
Counter Value before loop {{x}}
{% for myloop in range(6) %}
{% x=x+1 %}
{%end for%}
Counter Value after loop {{x}} 

You would expect the output  to be 
Counter value before loop 0
1
2
3
4
5
Counter value after loop 5


Instead what we get it is 
Counter value before loop 0
1
1
1
1
1
1
Counter value after loop 0

Everything inside loop gets a fresh value of our counter X in case


---

After some painful searching I stumbled upon a Ninja function called namespace for solving exactly the same issue

{% set x = namespace(value=0) %}
Counter Value before loop {{x}}
{% for myloop in range(6) %}
{% x.value=x.value+1 %}
{%end for%}
Counter Value after loop {{x}} 

Now the output is
Counter value before loop 0
1
2
3
4
5
Counter value after loop 5

------------------------------
Prashant Maheshwari
------------------------------
No RepliesBe the first to reply