2017-11-16 4 views
0

Ich arbeite in einer Anwendung ähnlich einer unten. Ich habe mein Eingabefeld in der Sidebar unter einem Menü, das zunächst erweitert wird. Ich möchte das Menü ausblenden und alle Eingabebereiche ausblenden, damit meine Seitenleiste sauber ist. Aber es sollte erscheinen, wenn ich expandiere (nicht dauerhaft ausblenden). Ich habe die folgende Lösung versucht, aber es funktioniert nicht. Bitte helfen Sie mir, eine Lösung oder einen alternativen Ansatz zu finden.Collapse (close) Menü in SidebarMenu von Shinydashboard auf Knopfdruck

library(shiny) 
library(shinydashboard) 
library(shinyjs) 

ui <- dashboardPage(
    header = dashboardHeader(), 
    sidebar = dashboardSidebar(
    sidebarMenu(
     menuItem(
     startExpanded = TRUE, 
     "Menu 1", 
     column(
      width = 12, 
      actionButton("hideMe", label = "Collapse Me", icon = icon("close")) 
     ) 
    ) 
    ) 
), 
    body = dashboardBody() 
) 
server <- function(input, output, server){ 
    observeEvent(input$hideMe, { 
    shinyjs::hide(selector = "ul.menu-open"); 
    }) 
} 

runApp(shinyApp(ui, server)) 

Antwort

1

Sie benötigen useShinyjs() in ui Teil hinzufügen

library(shiny) 
library(shinydashboard) 
library(shinyjs) 

ui <- dashboardPage(
     header = dashboardHeader(), 
     sidebar = dashboardSidebar(
       useShinyjs(), 
       sidebarMenu(
         menuItem(
           startExpanded = TRUE, 
           "Menu 1", 
           column(
             width = 12, 
             actionButton("hideMe", label = "Collapse Me", icon = icon("close")) 
           ) 
         ) 
       ) 
     ), 
     body = dashboardBody() 
) 
server <- function(input, output, server){ 
     observeEvent(input$hideMe, { 
       shinyjs::hide(selector = "ul.menu-open"); 
     }) 
} 

runApp(shinyApp(ui, server)) 
+0

Danke, ist der Trick, 'useShinyjs zu setzen()' im 'ui' Abschnitt. – TheRimalaya

Verwandte Themen