1

我正在尝试在 navbarPage 中添加一个 tabPanel,以便当您单击它时会打开一个模式窗口而不是一个新选项卡。下面的代码段无效,因为 tabPanel 没有 id 参数。

library(shiny)
library(shinyBS)
shinyUI(fluidPage(
    navbarPage("Sample App", id = "main_menu", 
        tabPanel("Open Modal", id = "moda")),
    bsModal("modal1", "Example", "moda", p("This is a modal"))
)

如果我从浏览器编辑生成的 HTML 代码,我可以通过更改行来实现

<a href="#tab-9741-5" data-toggle="tab" data-value="Open Modal">Open Modal</a>

<a href="#" data-toggle="modal" data-target="#modal1">Open Modal</a>

<li>元素上。

知道如何做到这一点,或者至少如何覆盖闪亮的生成的html?

4

1 回答 1

2

一种解决方案是使用 Javascript 重写选项卡标题的属性。下面的 JS 代码找到选项卡标题链接,并重写其属性。

library(shiny)

jsStr <- '$(document).ready(function(){
  $("a[data-value=\'OpenModal\']").attr({
    "href":"#", 
    "data-toggle":"modal",
    "data-target":"#modal1"
  });
})
' 

ui <- shinyUI(fluidPage(
  tags$head(tags$script(HTML(jsStr))),
  navbarPage("title",
    tabPanel("OpenModal")
  ),
  bsModal("modal1", "Example", "moda", p("This is a modal"))
))
于 2016-04-10T17:52:25.487 回答