问题:
在ZK中,当使用自定义组件时,生命周期中什么时候构建组件内容最好(任意复杂度)。也就是说,在什么时候可以安全地假设我们已经从视图获取了所有数据,但是不需要等待太久。
详细信息:
在ZK中,我可以创建一个自定义组件MyCoolComponent
:
package my.package;
public class MyCoolComponent extends Div {
private String title;
public MyCoolComponent() {
Selectors.wireVariables(this, this, Div.class);
Selectors.wireComponents(this, this, false);
Selectors.wireEventListeners(this, this);
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
// When is the correct time to call this function?
public void initializeComponent() {
appendChild(new Label(title));
// arbitrarily complex initialization follows ..
}
}
我可以像这样在zul文件中使用自定义组件:
我可以在 zul 文件中使用我的自定义组件,方法如下:
<?component name="coolcomponent" class="my.package.MyCoolComponent" ?>
<zk>
<coolcomponent id="cool" height="200px" title="Sean is Cool" />
</zk>
现在,当使用这个
Component
时,我想添加子 Components
,例如,通过在 MyCoolComponent
中调用 initializeComponent
函数。
在 Composers
的世界中,我们被教导要在生命周期的 After Compose
阶段中处理所有这类工作,使用 doAfterCompose
函数。如果像这样创建了一个 Component
,是否也是如此呢?如果是,最佳(即高效、安全、易读)的方法是什么?我觉得为 onRender
事件附加 @Listen
是不太好的方式。有什么建议吗?