如何从客户端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)
谢谢...
我想问题是你的函数是在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)
所以你的代码中还有其他错误.