I/O チャネルイベントの部分更新の取得

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.ibm.com/xsp/core xsdxp://localhost/xsp~core.xsd">
  <xp:this.properties>
    <xp:parameter name="xsp.client.script.dojo.djConfig"
      value="ioPublish:true">
    </xp:parameter>
  </xp:this.properties>
  <xp:button value="SSJS: Sniff this Ajax Request" id="button1">
    <xp:eventHandler event="onclick" submit="true"
      refreshMode="partial" refreshId="computedField1">
      <xp:this.action>
        <![CDATA[#{javascript:
          viewScope.foo = @Unique()
        }]]>
      </xp:this.action>
    </xp:eventHandler>
  </xp:button>
  <xp:button value="CSJS: Sniff this Ajax Request" id="button2">
    <xp:eventHandler event="onclick" submit="false">
      <xp:this.script>
        <![CDATA[
          XSP.partialRefreshGet("#{id:computedField1}");
        ]]>
      </xp:this.script>
    </xp:eventHandler>
  </xp:button>
  <xp:br></xp:br>
  <xp:br></xp:br>
  <xp:text escape="true" id="computedField1"
    value="#{javascript:viewScope.foo}">
  </xp:text>
  <xp:br></xp:br>
  <xp:br></xp:br>
  <xp:scriptBlock id="scriptBlock1">
    <xp:this.value>
      <![CDATA[
        dojo.subscribe("/dojo/io/start", function(data){
          // Triggered when there are no outstanding IO requests,
          // and a new IO request is started. No arguments are passed with this topic.
            console.log("triggered on /dojo/io/start channel");
             
            var div = XSP.getElementById("#{id:hiddenDiv}");
            if(null != div){
              div.style.display = "inline";
            }
        });
         
        dojo.subscribe("/dojo/io/send", function(data){
          // Triggered whenever a new IO request is started.
          // It passes the dojo.Deferred for the request.
            console.log("triggered on /dojo/io/send channel");
        });
         
        dojo.subscribe("/dojo/io/load", function(data){
          // Triggered whenever an IO request has loaded
          // successfully. It passes the response and the
          // dojo.Deferred for the request.
            console.log("triggered on /dojo/io/load channel");
        });
         
        dojo.subscribe("/dojo/io/error", function(data){
          // Triggered whenever an IO request has errored.
          // It passes the error and the dojo.Deferred
          // for the request with the topic.
            console.log("triggered on /dojo/io/error channel");
        });
         
        dojo.subscribe("/dojo/io/done", function(data){
          // Triggered whenever an IO request has completed,
          // either by loading or by erroring. It passes the error and
          // the dojo.Deferred for the request with the topic.
            console.log("triggered on /dojo/io/done channel");
             
            var div = XSP.getElementById("#{id:hiddenDiv}");
            if(null != div){
              div.style.display = "none";
            }
        });
         
        dojo.subscribe("/dojo/io/stop", function(data){
          // Triggered when all outstanding IO requests have
          // finished. No arguments are passed with this topic.
            console.log("triggered on /dojo/io/stop channel");
        });
      ]]>
    </xp:this.value>
  </xp:scriptBlock>
  <xp:div id="hiddenDiv" style="display:none">Hello World</xp:div>
</xp:view>





部分更新のリクエストが発生している間にI/Oチャネルイベントを常時チェックします。一般的な「進捗」インディケーター(例:アニメーションGIFによる)の機能を提供する際に有効です。

XPages
katoman
July 21, 2015 12:53 PM
Rating
0





No comments yetLogin first to comment...