跳到主要内容

占位符语法

占位符是把 JS 数据塞进组件的桥。语法非常简单:用 ${...} 包住一个变量名或路径。

提示

旧的 {...} 写法仍兼容,保存时会自动规范化为 ${...}。新模板建议统一写 ${...}

基础:${变量名}

JS 里写:

this.title = "你好"
this.count = 42

组件内容字段写:

${title}      → 显示: 你好
你有 ${count} 条新消息 → 显示: 你有 42 条新消息

进阶:${对象.字段} 点号路径

如果你的变量是个对象或数组,可以直接用点号 / 方括号深入访问:

this.user = {
name: "Alice",
badges: ["VIP", "新人"]
}
${user.name}        → Alice
${user.badges[0]} → VIP

支持任意嵌套:${a.b[0].c.d} 都能解析。

这是新功能

旧版本必须写 ${$.user.name},有了这个之后,无前缀也能直接点号路径了。

强制全局:${$.xxx}

$. 前缀的意思是"绕过循环作用域,从最外层全局查"。 日常你用不到,只有写循环的时候,循环内变量名外面的全局变量名撞了才需要它。

this.row = "外面的"
this.list = [{ name: "A" }, { name: "B" }]
循环内:
${row} → 当前循环项,比如 {name:"A"}
${$.row} → "外面的" ← 强制读全局

循环数据源:${数组[变量名]}

只有在 loop / vstack / hstack 等容器的"循环数据源"字段里才会用这种格式。 意思是:遍历某个数组,每一项命名为某个变量,然后子组件就能用这个变量。

this.rows = [
{ title: "苹果", price: 5 },
{ title: "香蕉", price: 3 }
]

容器的循环数据源字段填:

${rows[row]}

意思是 — 遍历 rows,每一项叫 row。然后子组件里就能写:

${row.title}    → 苹果 / 香蕉
${row.price} → 5 / 3

嵌套循环也支持:

外层数据源: ${rows[row]}
内层数据源: ${row.cells[cell]} ← 用上一层的 row 的 cells 字段
内层组件: ${cell.text}

详细见 循环组件

取不到值会怎样?

  • 占位符不存在 → 替换为空字符串 "",不会报错
  • 写错了路径 → 同上,显示空白(所以多用 console.log 自查)

速查表

写法含义
${name}this.name
${user.name}this.user.name
${list[0]}this.list[0]
${a.b[2].c}任意嵌套
${$.name}强制全局,跳过循环作用域
${rows[row]}循环:用于"循环数据源"字段
文字 ${x} 文字一段文本里可以混多个占位符