gpt4 book ai didi

java - AfterCompose 与 Init ZK

转载 作者:行者123 更新时间:2023-12-01 09:06:31 29 4
gpt4 key购买 nike

我正在使用 Zk 框架。我知道 @AfterCompose@Init 注解的存在,但我不知道在 ViewModel 中使用它们时的差异和顺序。

有人可以解释一下这些差异吗?

例如,

@AfterCompose
public void init(@ContextParam(ContextType.VIEW) Component view) {
Selectors.wireComponents(view, this, false); // wire the components here
}

@Init
public void init() {
//do more things
}

谢谢

最佳答案

@init 和 @AfterCompose 之间的区别在于它们何时执行,而不在于它们将执行什么。这两种方法以类似的方式工作,在 View 模型中分配变量以及不依赖于组件创建的任何其他初始化任务。

ZUL 页面生命周期如下:

<强>1。页面初始化

<强>2。组件创建

它首先加载ZUL中分配的组件的属性

如果使用 ViewModel 属性将任何 View Model 分配给组件,则它会由 Binder 初始化并调用 init 方法

如果我们将某个方法标记为@init注释,那么它将在这里被调用。

组件创建完成后,它会调用 AfterCompose

如果我们将某个方法标记为@AfterCompose注释,那么它将在这里被调用。

<强>3。事件处理

<强>4。渲染

<小时/>

@init:

  • 在组件创建完成之前,它会在创建 ViewModel 时加载最初在 ViewModel 中声明的带注释的方法。
  • 我们可以使用 init 方法在 ViewModel 中分配需要初始化的变量。
  • @AfterCompose:

    1. 仅在组件创建完成后才加载 ViewModel 中声明的带注释的方法。
    2. 我们可以使用 AfterCompose 方法在 ViewModel 中分配需要初始化的变量。

    注意:建议使用 AfterCompose 而不是 init。因为它是在组件创建和 View 模型初始化之后调用的。

    请参阅以下链接以获得更好的理解!!

    https://www.zkoss.org/wiki/ZK_Developer%27s_Guide/Appendix/Component_Life_cycle/Table_of_Sequence

    http://books.zkoss.org/zk-mvvm-book/8.0/syntax/viewmodelinit.html

    http://books.zkoss.org/zk-mvvm-book/8.0/syntax/aftercompose.html

    关于java - AfterCompose 与 Init ZK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226108/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com