Handlebarsjablonen ondersteunen een aantal functies die kunnen helpen bij het goed renderen van uw tekst. In dit artikel behandelen we enkele van de meest voorkomende functies en hoe ze in Workiva kunnen worden gebruikt.
Opmerking: Hoewel we elke functie hier afzonderlijk vermelden, kunnen veel Handlebars-functies "gestapeld" of binnen een andere functie gebruikt worden.
ELKE
De functie EACH wordt het meest gebruikt en is bedoeld voor het verwerken van een JSON. De functie doorloopt een JSON object of array; de syntaxis van de functie maakt gebruik van een openend en sluitend blok. Elk element in de array is beschikbaar voor bewerking binnen het EACH lusblok:
{{#each object }}
{{object element}}
{{/each}} In de opdrachten Tekstsjabloon renderen en Bestandssjabloon renderen wordt het te verwerken JSON-object/array opgegeven in de sectie JSON-variabelen:
De naam die in het gedeelte JSON-variabelen van de opdracht is opgegeven, wordt gebruikt in het openingsblok EACH van de sjabloon. Voor een eenvoudige JSON-array zoals de volgende is elke sleutel (Prioriteit & Eigenaar in het onderstaande voorbeeld) beschikbaar voor verwerking binnen de EACH-lus:
[
{
"Eigenarennaam": "Abby Steere",
"Prioriteit": "Hoog"
},
{
"Eigenarennaam": "Jeff Hickey",
"Prioriteit": "Hoog"
},
{
"Naam eigenaar": "Ryan Niebruegge",
"Prioriteit": "Hoog"
},
{
"Naam eigenaar": "Ryan Niebruegge",
"Prioriteit": "Laag"
},
{
"Eigenarennaam": "Abby Steere",
"Prioriteit": "Gemiddeld"
},
{
"Eigenarennaam": "Jeff Hickey",
"Prioriteit": "Gemiddeld"
},
{
"Naam eigenaar": "Ryan Niebruegge",
"Prioriteit": "Gemiddeld"
}
]
Voorbeeld
Task Owner,Task Priority
{{#each object_items}}
{{Owner}},{{Priority}}
{{/each}}
Afgegeven resultaat
De EACH-functie kan ook complexere JSON-objecten verwerken, inclusief die met geneste arrays.
Voorbeeld JSON object (productlijst)
{
"producten": [
{
"id": 1,
"title":"iPhone 14",
"price": 799,
"brand":"Apple",
"category":"smartphones",
"images": [
"/products/1/1.jpg",
"/products/1/2.jpg",
"/products/1/3.jpg",
"/products/1/4.jpg",
"/products/1/thumbnail.jpg"
]
},
{
"id": 2,
"title": "iPhone 15",
"price": 899,
"brand": "Apple",
"category": "smartphones",
"images": [
"/products/2/1.jpg",
"/products/2/2.jpg",
"/products/2/3.jpg",
"/products/2/thumbnail.jpg"
]
},
{
"id": 3,
"title":"S23 Ultra",
"price": 1249,
"merk": "Samsung",
"categorie": "smartphones",
"afbeeldingen": [
"/products/3/1.jpg"
]
},
{
"id": 4,
"title":"Pixel 8",
"price": 799,
"brand":"Google",
"category":"smartphones",
"images": [
"/products/4/1.jpg",
"/products/4/2.jpg",
"/products/4/thumbnail.jpg"
]
}
]
,"limit":100 ,"total":4
,"hasmore":false
} Voorbeeld
In deze sjabloon hebben we zowel toegang tot een item in de root (totaal) als lussen we over een array (producten) van items:
JSON Object heeft {{response.total}} items:
{{#each response.products}}
{{title}}
{{/each}} Afgegeven resultaat
UNLESS en @FIRST / @LAST
De functie UNLESS wordt meestal gecombineerd met de operatoren @FIRST of @LAST om de uiteindelijke uitvoer van de render te regelen.
Als u bijvoorbeeld een door komma's gescheiden lijst maakt van de waarden die itereren, is een komma niet nodig na het laatste item in de lijst. Door UNLESS en @LAST te combineren, kan gemakkelijk een door komma's gescheiden lijst worden gegenereerd die niet eindigt met een komma.
Voorbeeld
{{#each response.products}}{{{#itle}}{{#unless @last}},{{/unless}}{{/each}} Weergegeven resultaat met behulp van het object Product List
IF / ELSEIF / ELSE en EQUAL
Met de functies IF, ELSEIF en ELSE kan logica aan de sjabloon worden toegevoegd om rekening te houden met verschillende scenario's. Het gebruik van IF vereist niet dat ELSEIF of ELSE wordt gebruikt als functies ook worden gecombineerd met EQUAL-operatoren.
De equal operator kan worden gebruikt om tekst of numerieke waarden te vergelijken. Als bij het vergelijken van tekstwaarden een van de waarden expliciet is opgegeven en niet is opgehaald uit een variabele, dan moet deze tussen dubbele aanhalingstekens staan.
Voorbeeld
In dit voorbeeld wordt "brand" in de IF-functie opgehaald uit de JSON-variabele. Bij uitvoering wordt de variabele vervangen door de waarde in het merkelement van het object.
{{brand}},{{#if (equal brand "Apple")}}iOS{{else}}Android{{/if}} Weergegeven resultaat met behulp van het object Product List
@KEY / DIT / @INDEX
De functies @KEY en THIS zijn handig bij interactie met JSON-objecten waarbij de sleutelnaam varieert of mogelijk niet bekend is.
De functie @INDEX geeft de positie terug van het item dat in een elke bewerking wordt verwerkt.
Opmerking: De @INDEX-functie is gebaseerd op nul, dus het eerste item in de lijst heeft een indexwaarde van 0, het tweede een indexwaarde van 1, enzovoort.
Voorbeeld JSON lichaam
Deze body is het antwoord van het Get File Properties commando van de Workiva connector:
{
"created": "2023-11-20T21:02:09.000Z",
"id": "91af3ec18c554d5a81fd4ec4edc3a897",
"metadata": {
"account": {},
"bedrag": {
"numberFormat": ",."
},
"entity": {}
},
"name": "Sample.csv",
"numRecords": 3,
"originalFileSize": 72,
"status": "IMPORTED",
"tableId": "d1463c30226445819b0dddf57226ccf7",
"tags": {
"WK-Chains-Bron": "https://h.sandbox.wdesk.com/s/wdata/oc/app/workiva-chains/find/executor?chainId=95631\u0026chainExecutorId=4217258"
},
"updated": "2023-11-20T21:02:18.000Z",
"userId": "V0ZVc2VyHzU1OTQwMTMxODMzMTE4NzI",
"version": 1
} Voorbeeld
{{#each properties.tags}}
{{@key}},{{{this}}}
{{/each}} Afgegeven resultaat
Functies combineren
Alle functies die in dit artikel worden beschreven, kunnen in combinatie met elkaar worden gebruikt. EACH-functies kunnen binnen andere EACH-functies worden genest; UNLESS-, IF-, @KEY-, THIS- of @INDEX-functies kunnen binnen een EACH-functie worden gebruikt om de weergegeven uitvoer voorwaardelijk te regelen.
Voorbeeld
In deze sjabloon worden meerdere functies gecombineerd om een tabel met HTML-opmaak te maken:
- De functie EACH wordt gebruikt om door de producten te lussen.
- Een @INDEX wordt gebruikt om de positie van het product in de matrix op te halen.
- Een IF-functie evalueert het merk van het product en maakt de tekst voorwaardelijk op.
- Een geneste EACH-instructie verwerkt de afbeeldingen voor elk product
- Een UNLESS-instructie voegt een regeleinde (
) toe na elke afbeeldingslink (behalve de laatste in de lijst)
| Artikel-ID | Product | Merk | Prijs | Afbeeldingen |
|---|---|---|---|---|
| {{@index}} | {{title}} | {{brand}} | {{price}} | {{#each images}}{{{#unless @last}} {{/unless}}{{/each}} |
Afgegeven resultaat
De resulterende tabel wordt hieronder weergegeven als deze in een webpagina of HTML-compatibele e-mail wordt bekeken: