2010-12-05 117 views
0

现在我已经挣扎了好几天了,而且我似乎无法做到。 这里是我的代码:ZK CDATA并传递一个变量?

<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> 

上面的代码是从一个ZUL ZK页面在foreach循环。它应该生成一个文件列表,在每个文件上你应该有一个“删除”按钮。当你点击它时,应该出现一个弹出窗口并要求确认。确认后,它应该将ID传递给一个函数,然后处理所有内容。

我很确定这是一个非常小的东西我失踪或不知道。

回答

2

这里有两个问题。

  1. 您不能在zscript中使用EL。相反,你必须通过隐式对象来访问它。例如,
 
    <window> 
     <button label="${each}" forEach="apple, orange"> 
     <zscript> 
     self.parent.appendChild(new Label("" + each)); 
     </zscript> 
     </button> 
    </window> 
  1. 然而,每次只在页面渲染是可用的。评估后重置。这意味着,您无法在事件监听器中访问它。例如,以下将不起作用
 
    <window> 
     <button label="${each}" forEach="apple, orange" 
     onClick='alert(""+each)'/> 
    </window> 

你要存储的每个对象,然后再在事件侦听器中使用它。

你可以看看ZK's reference

+0

谢谢:) ,帮助我! – tftd 2010-12-10 02:52:05