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
我正在使用 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