Получите как ключ, так и индекс, используя итерацию Jade
Как описано здесь: http://jade-lang.com/reference/, достаточно просто получить индекс или ключ. Но есть ли способ получить оба?
Это:
ul
each val, index in {"day": "Wed", "link": "url", "message": "three"}
li#item-= index + ': ' + val
Выводит следующее:
<ul>
<li id="item-">day: Wed</li>
<li id="item-">link: url</li>
<li id="item-">message: three</li>
</ul>
Но я хочу это:
<ul>
<li id="item-0">day: Wed</li>
<li id="item-1">link: url</li>
<li id="item-2">message: three</li>
</ul>
Ответы
Ответ 1
Я думаю, что вы получаете индекс только в том случае, если вы выполняете итерацию по массиву, поэтому документация по нефриту немного запутана с его примером. Я дам вам три варианта, как это сделать. Выберите свое приключение!
вариант 1: сохранить исходный ввод и создать собственный индекс
ul
-var index = 0
each val, key in {day: "Wed", link: "url", message: "three"}
li(id="item-#{index++}") #{key}: #{val}
параметр 2: измените свой вход на массив массивов
ul
each val, index in [["day", "Wed"], ["link", "url"], ["message", "three"]]
li(id="item-#{index}") #{val[0]}: #{val[1]}
вариант 3. Измените свой вход на массив объектов
ul
each val, index in [{day: "Wed"}, {link: "url"}, {message: "three"}]
li(id="item-#{index}") #{Object.keys(val)[0]}: #{val[Object.keys(val)[0]]}
Первый вариант - это, вероятно, то, что вы хотите, но другие могут быть интересны для чтения.
Ответ 2
Чтобы добавить к этому уже ответили вопрос, я не смог заставить их работать над PyJade. Я не могу найти страницу, которая ссылалась на этот отзыв, но она отлично работала для меня.
Добавьте это в свой __init__.py
файл, чтобы добавить функцию enumerate
в среду вашего пияда.
app.jinja_env.globals.update(enumerate=enumerate)
Затем вы можете использовать его в своих шаблонах, как и любой другой цикл pythonic enumeration:
for idx, val in enumerate(list_of_whatevs)
{{ idx }}, {{ val }}
Приветствия