动态显示/隐藏选项卡

时间:2019-08-08 17:20:12

标签: shiny modal-dialog show-hide tabpanel

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

0 个答案:

没有答案
相关问题