0

我已经为此苦苦挣扎了几天,但似乎无法正确解决。这是我的代码:

<attribute name="onClick"><![CDATA[
Messagebox.show("Remove this file?", "Remove?", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION,
new EventListener() {
    public void onEvent(Event evt) {
        switch (((Integer)evt.getData()).intValue()) {
            case Messagebox.YES: someFunction(${each.Id}); break;
            case Messagebox.NO: break;
        }
    }
})
]]></attribute>

上面的代码来自 ZK ZUL 页面中的一个 forEach 循环。它应该生成一个文件列表,并且在每个文件上都应该有一个“删除”按钮。当您单击它时,应该会出现一个弹出窗口并要求确认。在您确认后,它应该将 id 传递给一个函数,该函数从那时起处理所有事情。

我很确定这是我错过或不知道的非常小的东西。

4

1 回答 1

2

这里有两个问题。

  1. 您不能在 zscript 中使用 EL。相反,您必须通过隐式对象访问它。例如,
    <窗口>
      <button label="${each}" forEach="apple, orange">
        <zscript>
      self.parent.appendChild(new Label("" + each));
        </zscript>
      </按钮>
    </窗口>
  1. 但是,每个都仅在页面呈现中可用。评估后重置。这意味着,您无法在事件侦听器中访问它。例如,以下将不起作用
    <窗口>
      <button label="${each}" forEach="苹果,橙子"
        onClick='alert(""+each)'/>
    </窗口>

您必须先存储每个对象,然后在事件侦听器中使用它。

你可以看看ZK 的参考资料

于 2010-12-06T02:16:24.643 回答