循环

优质
小牛编辑
136浏览
2023-12-01

尽管已经支持JavaScript原生代码,Jade还是支持了一些特殊的标签,它们可以让模板更加易于理解,其中之一就是each, 这种形式:

each VAL[, KEY] in OBJ

一个遍历数组的例子 :

- var items = ["one", "two", "three"]
each item in items
  li= item

渲染为:

<li>one</li>
<li>two</li>
<li>three</li>

遍历一个数组同时带上索引:

items = ["one", "two", "three"]
each item, i in items
  li #{item}: #{i}

渲染为:

<li>one: 0</li>
<li>two: 1</li>
<li>three: 2</li>

遍历一个数组的键值:

obj = { foo: 'bar' }
each val, key in obj
  li #{key}: #{val}

将会渲染为:<li>foo: bar</li>

Jade在内部会把这些语句转换成原生的JavaScript语句,就像使用 users.forEach(function(user){, 词法作用域和嵌套会像在普通的 JavaScript 中一样:

each user in users
  each role in user.roles
    li= role

如果你喜欢,也可以使用for

for user in users
  for role in user.roles
    li= role