从客户端java脚本打开扩展库对话框

Vla*_*adP 0 javascript xpages

如何从客户端javascript打开扩展库对话框?我用

XSP.openDialog("#{id:myDialog}");
Run Code Online (Sandbox Code Playgroud)

如果我从xPage本身调用它,它的工作原理很完美......但是如何从客户端javaScript库中打开对话框呢?

Error: TypeError: dlg is undefined
Run Code Online (Sandbox Code Playgroud)

我需要从客户端javascript库中的函数调用它:

  <a onclick="return showMyDialog();">Click it</a>
Run Code Online (Sandbox Code Playgroud)

谢谢...

Per*_*ten 6

我想问题是你的函数是在XPage本身之外的资源中定义的.因此#{id:myDialog}没有被正确解析.

我建议你将对话框的id传递给你的函数.因此,请改为定义您的函数:

function showDELinks(dialogId){ XSP.openDialog(dialogId); return true; }
Run Code Online (Sandbox Code Playgroud)

然后你可以这样调用你的函数:

<a onclick="return showDELinks("#{id:myDialog}");">Click it</a>
Run Code Online (Sandbox Code Playgroud)

更新

这个简单的演示工作.这是XPage:

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xp:this.resources>
        <xp:script src="/csLib.js" clientSide="true"></xp:script>
    </xp:this.resources>

    <a onclick="return showDELinks('#{id:myDialog}');">Click it</a>

    <xe:dialog id="myDialog"></xe:dialog>

</xp:view>
Run Code Online (Sandbox Code Playgroud)

这是csLib:

function showDELinks(dialogId){ XSP.openDialog(dialogId); return true; }
Run Code Online (Sandbox Code Playgroud)

所以你的代码中还有其他错误.