2016-06-16 2 views
1

클릭 할 때 일부 CSJS를 호출해야하는 두 개의 basicLeafNode가있는 툴바가 있습니다. 이렇게하기 위해 CSJS를 basicLeafNode의 onClick 이벤트에 넣었습니다.하지만이 작업을 수행 할 때 true, false 또는 전혀 반환하지 않는지 여부에 관계없이 event = "onItemClick"에 대한 eventHandler는 실행되지 않습니다. onClick 이벤트에서 CSJS를 제거하면 onItemClick이 실행됩니다. 내가 여기서 잘못하고있는 것에 대한 아이디어가 있습니까?basicLeafNode에 onClick 이벤트가있을 때 실행할 XPages 도구 모음 onItemClick 이벤트를 가져올 수 없습니다.

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

답변

1

basicLeafNodeonItemClick 이벤트의는 온 클릭 이벤트 toolbar을 덮어 쓰기 '.

이것은 렌더링 된 페이지 소스에서 볼 수 있습니다.

클라이언트 쪽 동작을 toolbaronItemClick 이벤트에 추가하면됩니다.

당신은

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

로 클릭 한 라벨을 얻고 클릭 라벨에 따라 코드를 추가 할 수 있습니다.

<?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> 
: 여기

는 작업 XPage의 예입니다