Usage
Signature:
interface BindForEachElement<K, D>
Generic Parameters
Parameter Description K Type of key when passing data via a DataProvider D Type of row data being iterated
Typescript Import Format
//To typecheck the element APIs, import as below.
import { BindForEachElement } from "ojs/ojknockout";
//For the transpiled javascript to load the element's module, import as below
import "ojs/ojknockout";
For additional information visit:
Slots
JET components that allow child content support slots. Please see the slots section of the JET component overview doc for more information on allowed slot content and slot types.
-
Default
-
The
oj-bind-for-eachdefault slot is used to specify the template for binding items of an array. The slot content must be a <template> element.When the template is executed for each item, it will have access to the same binding context that is applied to the <oj-bind-for-each> element. In addition the binding context will contain the following properties:
- $current - An object that contains information for the current item. (See the table below for a list of properties available on $current)
- alias - If as attribute was specified, the value will be used to provide an application-named alias for
$current. This can be especially useful if multiple oj-bind-for-each elements are nested to provide access to the data for each level of iteration.
Properties of $current:
Name Type Description dataD The current array item being rendered. indexnumber Zero-based index of the current array item being rendered. The index value is not updated in response to array additions and removals and is only recommended for static arrays. observableIndexko.Observable<number> An observable that refers to the zero-based index of the current array item being rendered. The observableIndexvalue is updated in response to array additions and removals and can be used for both static and dynamic arrays. -
noData
-
The
noDataslot is used to specify the content to display when the data is empty. The slot content must be a <template> element. If the slot is not specified no content will be rendered. The template slot will be executed with an empty context object.Example
Initialize the oj-bind-for-each with a noData slot specified:
<oj-bind-for-each> <template> <oj-bind-text value="[[$current.data.name]]"></oj-bind-text> <template> <template slot='noData'> <span><oj-button>Add item</span> <template> </oj-bind-for-each>
Attributes
-
as :string
-
An alias for the array item. This can be especially useful if multiple oj-bind-for-each elements are nested to provide access to the data for each level of iteration.
Deprecated:
Since Description 6.2.0Set the alias directly on the template element using the data-oj-as attribute instead. -
data :(Array.<D>|DataProvider.<K, D>)
-
The array or an DataProvider that you wish to iterate over. Required property. Note that the <oj-bind-for-each> will dynamically update the generated DOM in response to changes if the value is an observableArray, or in response to DataProvider events.
Type Definitions
-
DefaultItemContext<D>
-
Properties:
Name Type Description dataD The current array item being rendered. indexnumber Zero-based index of the current array item being rendered. The index value is not updated in response to array additions and removals and is only recommended for static arrays. observableIndexko.Observable<number> An observable that refers to the zero-based index of the current array item being rendered. The observableIndexvalue is updated in response to array additions and removals and can be used for both static and dynamic arrays.