数据截至 (上游 commit f5baf760d23a)
03 · 数据绑定与作用域
本章讲什么: A2UI 怎么把「数据」喂给「结构」。三件事:用 JSON Pointer 绑值、列表迭代时的相对作用域、输入组件的双向绑定与
formatString表达式。
1. Dynamic* 类型:一个属性的三种身份
A2UI 把「可绑定的属性」统一定义成 Dynamic* 类型(DynamicString/DynamicNumber/DynamicBoolean/DynamicStringList)。 一个 Dynamic 属性可以是三者之一(a2ui_protocol.md:128):
| 形态 | 例子 | 含义 |
|---|---|---|
| 字面量 | "text": "Hello" | 写死的值 |
| 路径绑定 | "text": {"path": "/user/name"} | 指向数据模型某处(JSON Pointer) |
| 函数调用 | "text": {"call": "formatDate", "args": {...}} | 调目录函数,用其返回值 |
这就是为什么上一章 Text 的 text 字段类型是 DynamicStringSchema 而不是 string。
2. 路径解析与作用域
数据绑定用 JSON Pointer(RFC 6901)。同一个路径解析成什么,取决于当前求值作用域(a2ui_protocol.md:724-746)。
2.1 根作用域(默认)
默认所有组件在根作用域。以 / 开头的是绝对路径,永远从数据模型根解析,跟组件嵌在哪无关。例:/user/profile/name。