2016-05-04 4 views
1

У меня проблема с моей приборной панелью. Я хочу создать динамическое меню боковой панели, но по умолчанию пункт меню не работает. Пользователь должен щелкнуть его, чтобы показать его. Я нашел пример по этой проблеме https://github.com/rstudio/shinydashboard/issues/71 но решение не работает. Если у вас есть идеи ... спасибо заранееДинамическое меню боковой панели RShiny

library(shiny) 
library(shinydashboard) 

ui <- dashboardPage(
    dashboardHeader(title = "Dynamic sidebar"), 
    dashboardSidebar(
    sidebarMenuOutput("menu") 
), 
    dashboardBody(tabItems(
    tabItem(tabName = "dashboard", h2("Dashboard tab content")) 
)) 
) 

server <- function(input, output) { 
    output$menu <- renderMenu({ 
    sidebarMenu(id="mytabs", 
     menuItem("Menu item", tabName="dashboard", icon = icon("calendar")) 
    ) 
    }) 
} 

shinyApp(ui, server) 
+1

Вместо того чтобы использовать функции renderMenu, это гораздо проще просто использовать htmlOutput, и renderUI, тогда вы можете положить туда, где хотите. – Shape

+0

Данный код работает для меня –

+0

@Shape Да, но у меня такая же проблема: 'щ <- информационной панелью ( dashboardHeader (название = "Dynamic врезку"), dashboardSidebar ( "меню" uiOutput() ), dashboardBody (tabItems ( TabItem (TABNAME = "панель", h2 ("Панель вкладка контент")) )) ) сервер <- функция (вход, выход) { выход $ меню <- renderUI ({ sidebarMenu (id = "mytabs", menuItem ("Пункт меню", tabName = "панель мониторинга", значок = значок ("календарь"))) }) } shinyApp (ui, server) ' – CClaire

ответ

3

Вот решение, использующее updateTabItems.

library(shiny) 
library(shinydashboard) 

ui <- dashboardPage(
    dashboardHeader(title = "Dynamic sidebar"), 
    dashboardSidebar(
    sidebarMenu(id="mytabs", 
     sidebarMenuOutput("menu") 
    ) 
), 
    dashboardBody(tabItems(
    tabItem(tabName = "dashboard", h2("Dashboard tab content")) 
)) 
) 

server <- function(input, output, session) { 
    output$menu <- renderMenu({ 
    sidebarMenu(
       menuItem("Menu item", tabName="dashboard", icon = icon("calendar")) 
    ) 
    }) 
    isolate({updateTabItems(session, "mytabs", "dashboard")}) 
} 

shinyApp(ui, server) 

Чтобы перейти к динамическому меню, вы можете увидеть этот пример. R shinydashboard dynamic menu selection

Edit: Я думаю, что isolate не нужен, но я хотел бы поставить его таким образом, чтобы улучшить чтение кода

+0

Да, это работает !!! большое спасибо – CClaire

+0

Очень рад помочь! – Romain

Смежные вопросы