Repeat
Any block that includes the repeat fragment can be rendered N times, once per item of a collection. It is the "for each" of the page, and it lives on the wrapper, not on the children.
| Property | Role |
|---|---|
vb_Repeat | Turns it on. Re-renders the four below |
vt_RepeatFunctionToExecute | The 4D expression producing the collection |
vt_RepeatKeyname | The name each item is exposed under |
vt_RepeatIdIteration | The id given to each iteration (4D expression allowed) |
vb_noRepeatInDev | See the warning below |
vb_noRepeatInDev is a false friend
Its name says "no repeat in dev". Its behaviour is the opposite: true means the repeat IS rendered in dev. The negation happens in GG_PROCESS_COMPONENTS, which is why the panel's label reads "do repeat in dev" while the property keeps its inherited name.
Trap: read the label, not the name. The schema itself flags this one.
Ids must be unique per iteration
vt_RepeatIdIteration exists because repeating a block repeats its ids too. Two elements with the same id in a page is how a click ends up acting on the first iteration whatever you clicked. Build the id from the item. And if you generate JavaScript inside a repeated block, wrap it in an IIFE and resolve elements by an id suffixed with the item's uuid, never by a bare id.
See also
- Wrapper: the usual carrier
- The listbox: for tabular data, a listbox is almost always the better answer

