zk viewmodel 或 selectorcomposer
zk viewmodel or selectorcomposer
我是 zk 世界的新手,所以我有疑问......我已经阅读了 zk 8 文档(几乎所有)。在办公室,一些合作伙伴正在使用 ViewModel,但在某些组件内部正在使用 Composer (selectorComposer) 来绑定一些元素,如下所示:
<div apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('com.some.package.SomeViewModel')">
<vbox>
... SOME ANOTHER ELEMENTS ....
<div apply="com.some.package.SomeComposer">
<hbox>
<vbox>
<checkbox ... more code...
</checkbox>
</vbox>
</hbox>
</div>
</vbox>
</div>
我读到如果应用 SelectorComposer 就会失去耦合...那么在 ViewModel 中采用 SelectComposer 的原因是什么?或者它是如何工作的?
非常感谢您的帮助。
在我看来 SelectComposer
允许您以非常传统的方式重用 java 代码。例如,您可以定义一个 AbstractController
,其功能将在功能稍有不同的相同类型的其他控件中重复使用,并扩展 AbstractController
。在这种方法中,您可以通过实现 SelectComposer
的方法(如 doAfterCompose
)来控制组件的生命周期。
但实际上你可以用纯 MVVM 做同样的事情,但是你应该使用像 @AfterCompose
或 @Init
这样的注释而不是 SelectComposer
的实现方法,你可以扩展基础 class 同样,要使用您的视图,您只需更改 zul 文件中的标签,例如:
<include src="/artifacts/componente_to_reuse.zul"/>
我认为这只是一个偏好问题,我更喜欢(而且我总是推荐)使用纯 MVVM,因为它可用,而且我还没有发现任何我无法通过 MVVM 方法重用的功能。
参考资料:
Include,
Zk annotations
我是 zk 世界的新手,所以我有疑问......我已经阅读了 zk 8 文档(几乎所有)。在办公室,一些合作伙伴正在使用 ViewModel,但在某些组件内部正在使用 Composer (selectorComposer) 来绑定一些元素,如下所示:
<div apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('com.some.package.SomeViewModel')">
<vbox>
... SOME ANOTHER ELEMENTS ....
<div apply="com.some.package.SomeComposer">
<hbox>
<vbox>
<checkbox ... more code...
</checkbox>
</vbox>
</hbox>
</div>
</vbox>
</div>
我读到如果应用 SelectorComposer 就会失去耦合...那么在 ViewModel 中采用 SelectComposer 的原因是什么?或者它是如何工作的?
非常感谢您的帮助。
在我看来 SelectComposer
允许您以非常传统的方式重用 java 代码。例如,您可以定义一个 AbstractController
,其功能将在功能稍有不同的相同类型的其他控件中重复使用,并扩展 AbstractController
。在这种方法中,您可以通过实现 SelectComposer
的方法(如 doAfterCompose
)来控制组件的生命周期。
但实际上你可以用纯 MVVM 做同样的事情,但是你应该使用像 @AfterCompose
或 @Init
这样的注释而不是 SelectComposer
的实现方法,你可以扩展基础 class 同样,要使用您的视图,您只需更改 zul 文件中的标签,例如:
<include src="/artifacts/componente_to_reuse.zul"/>
我认为这只是一个偏好问题,我更喜欢(而且我总是推荐)使用纯 MVVM,因为它可用,而且我还没有发现任何我无法通过 MVVM 方法重用的功能。
参考资料: Include, Zk annotations