Bind properties to state and data
Write supported expressions and connect inputs, app state, and records.
A binding calculates a property from the app's current state. Use a literal for fixed configuration and an expression between {{ and }} when a value should follow an input, data source, selection, or app state.
Three binding roots
| Root | Example | Purpose |
|---|---|---|
| app | {{ app.activeDocument }} | State initialized by the definition or changed by actions; also explicitly exposed interface parameters. |
| components | {{ components.Topic.value }} | A component's declared published state, such as an input value or selected row. |
| dataSources | {{ dataSources.orders.data }} | A source's records and its loading/run state. |
Exact field names depend on the component or source. Use the component reference's Publishes list; do not guess that every component exposes value or selectedRow.
Create a binding
Select the component, open Properties, and choose a binding-capable field. Type {{ and part of a path to see suggestions. Complete the expression and inspect the live diagnostic and Preview.
An expression containing only the binding can produce a typed number, boolean, object, or array. Mixed text interpolates values into a string. A table's data field should receive an array, while a label usually expects text. Validate the type as well as the path.
Calculations
The supported expression language includes ordinary value selection, comparisons, arithmetic, and helper functions such as len, first, last, sum, round, number, string, json, parseJson, keys, values, min, max, and abs. Expression-body arrow callbacks are supported for methods such as map, filter, and reduce. Statement blocks, arbitrary scripts, and eval are unavailable. See the Expression reference for every helper, method, type rule, and limit.
Keep expressions small and readable. Use app state and explicit event actions for multi-step interactions rather than hiding a whole workflow inside a display expression. Expressions have execution, length, nesting, string, and array limits, so a large calculation can be rejected even when syntactically correct.
Avoid broken references
Renaming or removing a component or source can leave authored expression text pointing to an old id. Review every reported location. Guard empty selections or unloaded data when the expression expects a row or document.
A binding is interface logic, not an authorization rule. See Visibility and Events.