XPage事件onStart和onComplete与dojo.connect一起使用

时间:2015-07-30 10:14:03

标签: javascript dojo xpages

我想将xp:eventHandler个活动onStartonCompletedojo.connect结合使用。

看一下这段代码:

    <xp:scriptBlock id="scriptBlock1">
        <xp:this.value><![CDATA[
dojo.connect(dojo.byId("#{id:btnSubmit}"), "onclick", callbackOnClick);
dojo.connect(dojo.byId("#{id:btnSubmit}"), "onComplete", callbackOnComplete);

function callbackOnClick() {
    alert("onclick works!!!");
}

function callbackOnComplete() {
    alert("onComplete works!!!");
}   ]]></xp:this.value>
    </xp:scriptBlock>

  <xp:button value="Submit" id="btnSubmit">
        <xp:eventHandler event="onclick" submit="true" refreshMode="norefresh">
            <xp:this.action><![CDATA[#{javascript:// do something on server side}]]></xp:this.action>
<!--            <xp:this.onComplete><![CDATA[alert("oncomplete");]]></xp:this.onComplete>-->
        </xp:eventHandler>
    </xp:button>

dojo.connect适用于onclick - 事件,但它不适用于onComplete - 事件?

提前感谢您的回答。

2 个答案:

答案 0 :(得分:2)

虽然onclick是一个真正的浏览器事件(可以与dojo连接),但oncomplete事件仅由XPages的XSP对象提供。

在查看生成的HTML代码(取消注释示例的onComplete事件)时,您可以看到它的代码转换为字符串(第二个参数):

XSP.attachPartial("view:_id1:_id2", "view:_id1:btnSubmit", null, "onclick", function(){}, 2, "@none", null, "alert\u0028\u0022oncomplete\u0022\u0029;", null);

XSP._partialRefresh 方法完成后,将对此字符串进行评估。

这就是为什么你不能在这里使用dojo.connect

答案 1 :(得分:-1)

我不明白为什么你需要使用dojo.connect将函数附加到onclick和onComplete事件。

只需将函数 callbackOnClick callbackOnComplete 放在 xp:eventHandler 对应的方法中。