2016-06-16 13 views
1

Ich habe eine Symbolleiste mit zwei BasicLeafNodes, in denen ich einige CSJS aufrufen müssen, wenn sie geklickt werden. Dazu lege ich den CSJS in das onClick-Ereignis des basicLeafNode, aber unabhängig davon, ob ich true, false oder no zurückgebe, wird der eventHandler für event = "onItemClick" nicht ausgeführt. Wenn ich das CSJS im onClick-Ereignis entferne, wird onItemClick ausgeführt. Irgendwelche Ideen, was ich hier falsch mache?Kann nicht XPages Symbolleiste onItemClick-Ereignis ausgeführt werden, wenn basicLeafNode onClick-Ereignis enthält

<xe:toolbar> 
    <xe:this.treeNodes> 
     <xe:basicLeafNode label="Back" submitValue="Back"></xe:basicLeafNode> 
     <xe:basicLeafNode label="Save &amp; Back" submitValue="SaveAndBack" loaded="${javascript:document1.isEditable()}" onClick="console.log('save and back clicked');"></xe:basicLeafNode> 
     <xe:basicLeafNode label="Edit" submitValue="Edit" loaded="${javascript:!(document1.isEditable())}"></xe:basicLeafNode> 
     <xe:basicLeafNode label="Save" submitValue="Save" loaded="${javascript:document1.isEditable()}" onClick="console.log('save clicked'); return true;"></xe:basicLeafNode> 
     <xe:basicLeafNode label="Delete"></xe:basicLeafNode> 
    </xe:this.treeNodes> 
    <xp:eventHandler event="onItemClick" submit="true" refreshMode="partial" refreshId="dc" disableValidators="#{javascript:context.getSubmittedValue() == 'Back'}"> 
     <xe:this.action> 
      <![CDATA[#{javascript: 
      vendor.runAction(context.getSubmittedValue(), document1); 
     }]]></xe:this.action> 
    </xp:eventHandler> 
</xe:toolbar> 

Antwort

1

basicLeafNode 's onClick Ereignis überschreibttoolbar' s onItemClick Ereignis.

Dies ist in gerenderten Seitenquellen sichtbar.

Drehen Sie es einfach um: fügen Sie Ihre clientseitigen Aktionen in toolbaronItemClick Ereignis hinzu.

Sie können die angeklickt Etikett mit

 var node = thisEvent.target.parentNode; 
     var label = node.getElementsByClassName('dijitButtonText')[0].innerHTML; 

erhalten und Ihren Code hinzufügen auf geklickt Etikett abhängig. Hier

ist ein funktionierendes XPage Beispiel:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view 
    xmlns:xp="http://www.ibm.com/xsp/core" 
    xmlns:xe="http://www.ibm.com/xsp/coreex"> 
    <xe:toolbar> 
     <xe:this.treeNodes> 
      <xe:basicLeafNode 
       label="first" 
       submitValue="first"> 
      </xe:basicLeafNode> 
      <xe:basicLeafNode 
       label="second" 
       submitValue="second"> 
      </xe:basicLeafNode> 
     </xe:this.treeNodes> 
     <xp:eventHandler 
      event="onItemClick" 
      submit="true" 
      refreshMode="complete"> 
      <xe:this.script><![CDATA[ 
       var node = thisEvent.target.parentNode; 
       var label = node.getElementsByClassName('dijitButtonText')[0].innerHTML; 
       alert('action for: ' + label); 
       return true; 
      ]]></xe:this.script> 
      <xe:this.action><![CDATA[#{javascript: 
        print(context.getSubmittedValue()); 
      }]]></xe:this.action> 
     </xp:eventHandler> 
    </xe:toolbar> 
</xp:view>