我正在尝试在我的应用程序中动态显示/隐藏一个闪亮的“模态”中的tabPanel,但无法解决。如果我使用当前代码,然后简单地将tabPanels放在应用程序主体内,该代码就可以正常工作,因此似乎该应用程序以某种方式无法识别它必须在模式内部显示/隐藏面板。
library(shiny)
tabPanel_modal<-function() {
modalDialog(
tabsetPanel(
id = "available_tabs",
tabPanel(
title = "Tab A",
value = "tab_a"
),
tabPanel(
title = "Tab B",
value = "tab_b"
),
tabPanel(
title = "Tab C",
value = "tab_c"
)
)
,
size = "l",
footer = tagList(
modalButton("Close")
)
)
}
ui <- shinyUI(
fluidPage(
checkboxGroupInput(
inputId = "tab_selections",
label = "select tabs to include in the modal",
choiceNames = list("Tab A",
"Tab B",
"Tab C"
),
choiceValues = c("a","b","c")
),
actionButton("start_modal","Start modal")
)
)
server <- shinyServer(function(input,output,session){
observeEvent(input$start_modal,{
showModal(tabPanel_modal())
})
observe({
hideTab(inputId = "available_tabs", target = "tab_a")
hideTab(inputId = "available_tabs", target = "tab_b")
hideTab(inputId = "available_tabs", target = "tab_c")
})
observeEvent(input$start_modal, {
if ("a" %in% input$tab_selections){
showTab(inputId = "available_tabs", target = "tab_a")
}
if ("b" %in% input$tab_selections){
showTab(inputId = "available_tabs", target = "tab_b")
}
if ("c" %in% input$tab_selections){
showTab(inputId = "available_tabs", target = "tab_c")
}
})
})
shinyApp(ui = ui, server = server)