@load() 和 ${} 有什么区别

What difference between @load() and ${}

代码:

<zk>
    <vbox r="@ref(1)">
        <label value="${empty r}" />
        <label value="@load(empty r)" />
    </vbox>
</zk>

returns:

true
false

${} 无法使用@ref()?

简答:不,不是。

首先,如果您希望自动更新值,请使用 @load(...),因为 ${...} 中的静态表达式仅计算一次。

其次,绑定注释@init/@load 在 ZK Bind 生命周期中比静态 EL 表达式计算得晚。

所以 ZK 首先尝试评估你的 ${empty r},此时 r 未定义,因此 ${empty r} 为空。 然后在生命周期的后期,它将处理数据绑定注释 @.