Get both the key and the index using Jade iteration
Just to add to this already answered question, I wasn't able to get any of these to work reliably with PyJade. I can't find the page that referred me to this tip, but it's worked perfectly for me.
Add this to your __init__.py
file to added the enumerate
function to your pyjade environment.
app.jinja_env.globals.update(enumerate=enumerate)
Then, you can use it in your templates like any other pythonic enumeration loop:
for idx, val in enumerate(list_of_whatevs)
{{ idx }}, {{ val }}
Cheers
I think you only get an index if you are iterating over an array, so the jade documentation is a little confusing with its example. I'll give you three options for how to accomplish this. Choose your own adventure!
option 1: Keep your original input and build your own index
ul
-var index = 0
each val, key in {day: "Wed", link: "url", message: "three"}
li(id="item-#{index++}") #{key}: #{val}
option 2: Change your input to an array of arrays
ul
each val, index in [["day", "Wed"], ["link", "url"], ["message", "three"]]
li(id="item-#{index}") #{val[0]}: #{val[1]}
option 3: Change your input to an array of objects
ul
each val, index in [{day: "Wed"}, {link: "url"}, {message: "three"}]
li(id="item-#{index}") #{Object.keys(val)[0]}: #{val[Object.keys(val)[0]]}
The first option is probably what you want, but the others may be interesting to read.