@template
Syntax
@template(
[EL-expression]
)
Description
Target Attribute: model, children
Purpose: It should be used with @bind
, @load
. It determines which template should be used to render child components.
The evaluation result of EL expression should be the name of a template which is used to render child components. The result template's name can be any template defined in the same id space.
Example
Dynamic template upon iteration status variable
<combobox model="@bind(item.options ) @template(forEachStatus.index eq 0 or forEachStatus.index eq 2 ? 'model1' : 'model2')">
<template name="model1" var="option">
<comboitem label="@bind(optionStatus)" description="@bind(option)"/>
</template>
<template name="model2" var="option">
<comboitem label="@bind(optionStatus)" description="@bind(option)"/>
</template>
</combobox>
Recursive usage
<vlayout id="vlayout" children="@load(vm.nodes) @template('greenBox')">
<template name="greenBox" var="node">
<vlayout style="padding-left:10px; border:2px solid green;">
<label value="@bind(node.name)"/>
<vlayout children="@load(node.children) @template('greenBox')"/>
</vlayout>
</template>
</vlayout>
- vm.nodes has a tree-like structure, and node.children is a collection of node.