【问题标题】:How can I pass a value when creating a new tab panel with CSJS使用 CSJS 创建新选项卡面板时如何传递值
【发布时间】:2015-07-17 15:18:13
【问题描述】:

我想使用 CSJS 为 Dojo 选项卡容器创建一个新的选项卡式面板,例如:

 dijit.byId('#{id:djTabContainer1}').createTab({ tabTitle: Math.random()});

默认选项卡面板有一个将使用 iframe 标记的面板,我想将上述调用中的 src html 属性传递给面板。

问题:我可以指定要在 iframe 中加载的 url。有没有办法通过这个?

似乎 createTab 只执行某些与选项卡相关的参数,如 action 和 tabTitle。

霍华德

【问题讨论】:

标签: html dojo xpages xpages-extlib


【解决方案1】:

这里的语法有些晦涩。从 ExtLib 演示应用中的代码开始:

XPagesExt.nsf/Core_DynamicTabs.xsp

将button4中的脚本改成:

dijit.byId('#{id:djTabContainer1}')
    .createTab({
      "newName":'Tab'+Math.random(),
      "newHref":'/XPagesExt.nsf/page5.xsp'})

以匹配您请求的语法。 并且,在 defaultTabContent 引用的选项卡中,更改标题和 href 以使用那些传递的 URL 参数:

<xe:djTabPane xp:key="doc" id="djTabPane2"
    title="${javascript:/*load-time-compute*/param.newName}" 
    href="${javascript:/*load-time-compute*/param.newHref}"

它将创建选项卡并尝试加载 href 内容。不过,我没有将它视为 iframe - 它只是一个容器 div。

【讨论】:

  • 谢谢,如果 href 有效,我就不需要 iframe。会试一试的。
  • 我得到了它的工作,但在设置 tabUniqueKey 时遇到问题(因此同一文档不会打开新标签)。使用 tabUniqueKey="${javascript:/*load-time-compute*/param.newName}" 会给我一个客户端警报,提示“更新某些页面时发生错误。_386.parentNode 为空”
  • 提交前提供tabUniqueKey来createTab:var newName = 'Tab'+Math.random(); dijit.byId('#{id:djTabContainer1}') .createTab({ "newName":newName, "newHref":'/XPagesExt.nsf/page5.xsp', tabUniqueKey: newName}) 以及在服务器中 -侧标签(如您所见)。尝试重新打开现有选项卡时,父节点为空错误。当 tabUniqueKey 包含在对 createTab 的调用中时,它将刷新现有选项卡,而不是尝试创建和填充与现有选项卡具有相同 id 的新选项卡。
  • 谢谢,效果很好。然而,在 tabPane 中使用 HREF 的一个问题(以及为什么我试图让 iframe 工作)是一个将文档放在选项卡中进入编辑模式的按钮不起作用。它什么都不做……匿名拥有该文档的编辑权限。我在通过 href 打开的 XPage 中使用简单的操作来切换到编辑模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多