ZK 如何处理多个事件?
ZK How to handle multiple events?
我有文本框和监听两个事件的方法。
<textbox id="test" />
@Listen("onOK = #test; onBlur = #test")
public void action(Event event) {
// do something ...
}
当我在文本框上按 Enter 时,事件 "onOK " 被触发。没关系。
但是当我从 Texbox 失去焦点时,事件 "onBlur" 也会被触发。这很糟糕,因为在那种情况下我的方法 "action" 被调用了两次。
我怎样才能取消第二个活动?
如果不需要文本框失去焦点时触发事件,则需要删除onBlur
部分:
@Listen("onOK = #test")
public void action(Event event) {
// do something ...
}
那是因为在您的代码中,您正在使用注释 @listen
每次在带有 id="test" 的文本框中发生以下任何事件:onOk
或onBlur
(也就是失去焦点时触发的),然后执行方法action
。
更新
现在,如果您需要文本框用 onOK
触发一个事件,但在失去焦点时触发另一个事件 (onBlur
),那么显然您需要两种不同的方法并将 listen
两者都有标记,但具有自己的行为和条件,如下所示:
@Listen("onOK = #test")
public void action(Event event) {
// do something when Ok...
}
@Listen("onBlur = #test")
public void anotherAction(Event event) {
// do something when loses focus...
}
您可以将任何活动转发到另一个活动:
我created a fiddle where you can test it.
但有些解释:
在祖尔:
<textbox id="test" forward="onOK=test.onBlur"/>
什么说onOK会转发给onBlur,后面会是onBlur
在java代码中:
@Listen("onBlur = #test")
public void action(Event event) {
Clients.showNotification(event.getName() + " " + ++counter);
}
所以现在我们只监听 onBlur,因为 onOK 被转发到 onBlur。
这对你的 atm 案件有帮助吗,还没有。
不调用事件=>不可能,如果你声明它,它就会被触发。
但是你如何处理你的情况:
将字符串保存在您的作曲家中,并用新值检查它。
如果等于 => 事件已经触发,或者没有变化。
如果不相等 => 做你的事。
我有文本框和监听两个事件的方法。
<textbox id="test" />
@Listen("onOK = #test; onBlur = #test")
public void action(Event event) {
// do something ...
}
当我在文本框上按 Enter 时,事件 "onOK " 被触发。没关系。 但是当我从 Texbox 失去焦点时,事件 "onBlur" 也会被触发。这很糟糕,因为在那种情况下我的方法 "action" 被调用了两次。 我怎样才能取消第二个活动?
如果不需要文本框失去焦点时触发事件,则需要删除onBlur
部分:
@Listen("onOK = #test")
public void action(Event event) {
// do something ...
}
那是因为在您的代码中,您正在使用注释 @listen
每次在带有 id="test" 的文本框中发生以下任何事件:onOk
或onBlur
(也就是失去焦点时触发的),然后执行方法action
。
更新
现在,如果您需要文本框用 onOK
触发一个事件,但在失去焦点时触发另一个事件 (onBlur
),那么显然您需要两种不同的方法并将 listen
两者都有标记,但具有自己的行为和条件,如下所示:
@Listen("onOK = #test")
public void action(Event event) {
// do something when Ok...
}
@Listen("onBlur = #test")
public void anotherAction(Event event) {
// do something when loses focus...
}
您可以将任何活动转发到另一个活动:
我created a fiddle where you can test it.
但有些解释:
在祖尔:
<textbox id="test" forward="onOK=test.onBlur"/>
什么说onOK会转发给onBlur,后面会是onBlur
在java代码中:
@Listen("onBlur = #test")
public void action(Event event) {
Clients.showNotification(event.getName() + " " + ++counter);
}
所以现在我们只监听 onBlur,因为 onOK 被转发到 onBlur。
这对你的 atm 案件有帮助吗,还没有。
不调用事件=>不可能,如果你声明它,它就会被触发。
但是你如何处理你的情况:
将字符串保存在您的作曲家中,并用新值检查它。
如果等于 => 事件已经触发,或者没有变化。
如果不相等 => 做你的事。