2015-07-09 15 views
5

Gibt es eine Möglichkeit, die Sidebar in der glänzenden Dashboard-App manuell von der Serverseite aus zu aktivieren/deaktivieren?Sidebar von der Serverseite aus deaktivieren/aktivieren

Ich möchte die Sidebar automatisch ausblenden, wenn ich mehr Platz brauche, ohne die Umschalttaste in der Kopfzeile zu verwenden.

Danke

Antwort

10

ich mit Dashboards nicht sehr vertraut bin, wie ich nie gebaut, aber von einem einem schnellen Blick nehmen, wie es scheint, wenn sie auf der offenen/auszublenden Sidebar Schaltfläche klicken, alles, was geschieht, ist ein sidebar-collapse Klasse wird zum <body> Tag hinzugefügt/entfernt. Vielleicht passieren mir mehr Dinge, die mir nicht bewusst sind, aber das schien die sichtbarste Sache zu sein.

So können Sie leicht shinyjs Paket verwenden (Disclaimer: Ich bin der Autor) hinzufügen/entfernen, die Klasse

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

shinyApp(
    ui = 
    dashboardPage(
     dashboardHeader(), 
     dashboardSidebar(), 
     dashboardBody(
     shinyjs::useShinyjs(), 
     actionButton("showSidebar", "Show sidebar"), 
     actionButton("hideSidebar", "Hide sidebar") 
    ) 
    ), 
    server = function(input, output, session) { 
    observeEvent(input$showSidebar, { 
     shinyjs::removeClass(selector = "body", class = "sidebar-collapse") 
    }) 
    observeEvent(input$hideSidebar, { 
     shinyjs::addClass(selector = "body", class = "sidebar-collapse") 
    }) 
    } 
) 
+0

Vielen Dank, es funktioniert sehr gut. Ich lerne gerade über JS. – Geovany

+0

Übrigens verwende ich Ihre Bibliothek (shinyjs) seit der ersten Veröffentlichung. Es ist sehr nützlich für jemanden wie mich mit einer sehr grundlegenden Erfahrung mit JS. Ich mag Ihren Ansatz für die Bibliothek und tatsächlich habe ich viel aus dem Quellcode gelernt. Also, vielen Dank für die Erstellung von shinyjs :) – Geovany

+0

das ist sehr schön zu hören, danke! –