调试 MVVM 绑定时,一个不错的选择是在 zk.xml 中启用内置 MVVM 调试器:
<library-property>
<name>org.zkoss.bind.DebuggerFactory.enable</name>
<value>true</value>
</library-property>
这会输出大量日志,因此请确保仅在开发环境中激活它,而不是生产环境中。
关于 BindComposer 如何工作的细节: 如果绑定编辑器检测到日期框的值发生更改,它将尝试完成 @bind(form.date) 表达式的保存部分(@bind == @save + @load)。 这是由主机日期框触发 onChange 触发的。也就是说,您还有一个不同的事件侦听器也在侦听 datebox onChange,因此不能保证哪个事件侦听器将首先被调用。
为此,它应该尝试调用 form.setDate(...)
这里的额外问题是我不熟悉 ZK 上下文中项目(@screen、@form)中使用的注释。
此外,onChange$date 语法看起来更像 GenericForwardComposer 而不是 MVVM 绑定?所以我不太清楚实际使用的结构。
是否可以在 zkfiddle 中构建一个复制案例并发送该链接?