在 ZK 中,在我的 GenericForwardComposer 类中,如何捕获所有 onClick 和 onChange 事件?

发布于 2024-12-18 06:44:20 字数 144 浏览 1 评论 0原文

我知道如果我定义一个具有匹配 id 的 onClick$id 方法,我可以捕获特定的按钮或文本字段。我想要一个通用的 onClick-something 和 onChange-something 方法,当单击任何按钮或更新任何文本字段时都会调用该方法。 ZK框架可以实现吗?

I know that I can capture a specific button or text field if I define an onClick$id method with a matching id. I'd like to have a generic onClick-something and onChange-something method that gets called when any button is clicked or any text field is updated. Is that possible with the ZK framework?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

单挑你×的.吻 2024-12-25 06:44:20

您可以通过两种方式执行此操作。

1) 在控制器上定义单个事件处理程序,并将所有其他组件事件转发到该事件处理程序。例如。考虑这个具有 3 个按钮组件的示例 ZUML 文件

<zk>
<window id="mainwin" border="normal" title="hello" apply="pkg.TestComposer">
    <button id="btn1" label="Click Me 1" forward="mainwin.onClick" />
    <button id="btn2" label="Click Me 2" forward="mainwin.onClick" />
    <button id="btn3" label="Click Me 3" forward="mainwin.onClick" />
</window>
</zk>

现在,在应用于包含这 3 个按钮组件的 Window 组件的控制器中,您可以定义一个 onClick 事件处理程序,如下所示

public void onClick () throws Exception {
    Messagebox.show("Someone clicked!!!");
}

现在,对于每个按钮,您可以使用前向属性并将目标组件定义为以及以以下格式处理的事件:forward="event-name=target-component.target-event"。有关更多详细信息,请参阅此处的前向属性参考。

2) 在 ZK 6 中,有一种更优雅的方法可以使用 SelectorComposer 和注释来定义事件处理程序来实现此目的。例如,

@Listen("onClick = window > button") 
public void onClickAnyButton() {
  // ...    
}

请参阅此smalltalk了解有关SelectorComposer的更多详细信息

You can do this in two ways.

1) Define a single event handler on the controller and forward all other component events to that event handler. For eg. consider this sample ZUML file that has 3 Button components

<zk>
<window id="mainwin" border="normal" title="hello" apply="pkg.TestComposer">
    <button id="btn1" label="Click Me 1" forward="mainwin.onClick" />
    <button id="btn2" label="Click Me 2" forward="mainwin.onClick" />
    <button id="btn3" label="Click Me 3" forward="mainwin.onClick" />
</window>
</zk>

Now in the controller applied to the Window component containing these 3 Button components you cab define a single onClick event handler as below

public void onClick () throws Exception {
    Messagebox.show("Someone clicked!!!");
}

Now for each Button you can use a forward attribute and define the target component as well as the event to be handled in following format forward="event-name=target-component.target-event". For more details refer to forward attribute reference here.

2) In ZK 6 there is even more elegant way to achieve this using SelectorComposer and annotations to define event handlers. For e.g.

@Listen("onClick = window > button") 
public void onClickAnyButton() {
  // ...    
}

Please refer to this smalltalk for more details on SelectorComposer

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文