ZK:动态设置页面标题

ZK: Set page title dynamically

我正在使用 MVVM 并尝试根据显示的内容动态设置页面标题。当我尝试将标题更改为固定字符串时,它起作用了:

<?page title="My title"?>

但是,如果我尝试将其更改为视图模型中的值,则会失败(标题为空):

<?page title=${vm.titleProperty} ?>

我还尝试使用 @init 进行数据绑定:

<?page title=@init(vm.titleProperty) ?>

我找到了解决办法。在视图模型(java)中,您可以使用此代码设置页面标题:

Executions.getCurrent().getDesktop().getFirstPage().setTitle("Dynamic title");

那行得通,您可以考虑所有这些方法来访问 VM 中的页面对象:

@Command
myCommand(@ContextParam(ContextType.PAGE) Page page){...

Executions.getCurrent().getDesktop().getFirstPage()

myCommand(@ContextParam(ContextType.DESKTOP) Desktop desktop )
...
desktop.getFirstPage()

所有这些都可以让您访问 VM 中的页面。

或者更好的是,您可以注册一个客户端命令,并在触发客户端命令时在客户端上进行页面更改。这稍微复杂一些,但更适合遵循 mvvm 模式,因为视图与 VM 完全解耦。这里的例子: http://zkfiddle.org/sample/3nmad2u/2-page-title-mvvm