2010-12-05 7 views
0

Je me bats depuis quelques jours maintenant et je n'arrive pas à me débrouiller. Voici mon code:ZK CDATA et en passant une variable?

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

Le code ci-dessus est d'un cycle de forEach dans une page ZUL ZK. Il devrait générer une liste de fichiers et sur chaque fichier, vous devriez avoir un bouton "Supprimer". Lorsque vous cliquez dessus, une fenêtre contextuelle devrait apparaître et demander une confirmation. Après avoir confirmé, il doit passer l'identifiant à une fonction qui gère ensuite tout.

Je suis assez sûr que c'est quelque chose de vraiment petit que je manque ou ne sachant pas.

Répondre

2

Il y a deux problèmes ici.

  1. Vous ne pouvez pas utiliser EL dans zscript. Au contraire, vous devez y accéder via un objet implicite. Par exemple,
 
    <window> 
     <button label="${each}" forEach="apple, orange"> 
     <zscript> 
     self.parent.appendChild(new Label("" + each)); 
     </zscript> 
     </button> 
    </window> 
  1. Cependant, chacun est disponible uniquement dans le rendu des pages. Il est réinitialisé après évaluation. Cela signifie que vous ne pouvez pas y accéder dans l'écouteur d'événement. Par exemple, ce qui suit ne fonctionnera pas
 
    <window> 
     <button label="${each}" forEach="apple, orange" 
     onClick='alert(""+each)'/> 
    </window> 

Vous devez enregistrer le chaque objet d'abord, puis l'utiliser dans l'écouteur d'événement.

Vous pouvez jeter un oeil à ZK's reference

+0

Merci :) Cela m'a aidé! – tftd