Adding and removing
Ordinary array operations are enough. Pushing an item renders one new node, splicing removes one; nothing
else in the repeater is touched.
Example
ctrl.addItem = () =>
{
let items = $bindary.appData.demo.repeat.live.items;
items.push({ name: "Item " + (items.length + 1) });
};
ctrl.removeItem = () => $bindary.appData.demo.repeat.live.items.pop();
Result
With observing turned off, the array still changes but nothing
tells Bindary about it. Register the change against the collection's data-key instead.
$bindary.appData.demo.repeat.live.items.push({ name: "Item 4" });
$bindary.dataChange('demo.repeat.live.items', 'appData');
The same call takes array update rules, so you can say exactly which indexes changed and whether elements
should be recreated rather than reused. That matters for large collections, where re-rendering every row
because one of them moved is the thing you are trying to avoid. See
data changes.