ここで説明するように、 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>
配列を反復処理している場合にのみインデックスを取得すると思います。そのため、jadeのドキュメントはその例と少し混乱しています。これを実現するための3つのオプションを紹介します。あなた自身の冒険を選んでください!
ul
-var index = 0
each val, key in {day: "Wed", link: "url", message: "three"}
li(id="item-#{index++}") #{key}: #{val}
ul
each val, index in [["day", "Wed"], ["link", "url"], ["message", "three"]]
li(id="item-#{index}") #{val[0]}: #{val[1]}
ul
each val, index in [{day: "Wed"}, {link: "url"}, {message: "three"}]
li(id="item-#{index}") #{Object.keys(val)[0]}: #{val[Object.keys(val)[0]]}
最初のオプションはおそらくあなたが望むものですが、他のオプションは読むのが面白いかもしれません。
既に回答済みのこの質問に加えて、私はこれらのどれもPyJadeで確実に機能させることができませんでした。このヒントを参照するページを見つけることができませんが、私にとっては完全に機能しています。
これを__init__.py
ファイルに追加して、enumerate
関数をpyjade環境に追加します。
app.jinja_env.globals.update(enumerate=enumerate)
次に、他のPythonic列挙ループと同じようにテンプレートで使用できます。
for idx, val in enumerate(list_of_whatevs)
{{ idx }}, {{ val }}
乾杯