Create repeating elements by looping through data with {#each} blocks. Note that curly braces {...} execute JavaScript expressions in Evidence.

Each Loops

Loops enable you to iterate over the rows in a query result, and reference the row using an alias of your choosing. They are similar to for loops in Python.

{#each query_name as alias}



If you have more content than you would like to loop over on a single page, consider using a templated page.


Imagine you were creating a report on the performance of your organization's cities. You could use a loop to generate a section of your report for each city. When a new city appears in your query results, a new section will appear in your report.

The following table is being returned by the query location_summary

name sales_usd gross_margin_pct
New York 9,000 0.60
Toronto 4,000 0.70
Los Angeles 5,000 0.45
No Results

By using an {#each} block, we can iterate over each of the rows in location_summary, and reference the current row with the alias city. Here we'll create a header, and a paragraph for each of the three locations.

Daily sales:

{#each location_summary as city}

## {city.name}

<Value data={city} column=sales_usd/> in sales at a <Value data={city} column=gross_margin_pct/> gross margin.


Which would result in the following output

Daily sales:

New York

$9,000 in sales at a 60% gross margin.

Los Angeles

$5,000 in sales at a 45% gross margin.


$4,000 in sales at a 70% gross margin.