首页 > 解决方案 > 在闪亮的模式中动态显示/隐藏 tabPanels

问题描述

我正在尝试在我的应用程序的闪亮“模态”中动态显示/隐藏 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)

标签: shinymodal-dialogshow-hidetabpanel

解决方案


推荐阅读