Shiny: как выбрать открывшийся первый подпункт в меню

У меня довольно сложное блестящее приложение, все menuItems отображаются внутри серверной части. Это было необходимо сделать. И сейчас я не могу найти решение, как выбрать открывшийся первый подпункт в меню. Первая страница просто пуста.

library(shiny)
library(shinydashboard)


ui <- dashboardPage(
  dashboardHeader(
    title = "Shiny"
  ),

  dashboardSidebar(
    sidebarMenu(

      menuItemOutput("Section_1")

    )
  ),

  dashboardBody(

    tabItems(
      tabItem("report_1",h1("a")),
      tabItem("report_2",h1("b")),
      tabItem("report_3",h1("c"))
    )
  )
)


server <- function(input, output) {

    output$Section_1 <- renderMenu({

      menuItem("Section_1", tabName = "section_1", icon = icon("align-justify"), 
               startExpanded = TRUE, selected = TRUE,
               menuSubItem("Subsection 1", tabName = "report_1", selected = TRUE),
               menuSubItem("Subsection 2", tabName = "report_2"),
               menuSubItem("Subsection 3", tabName = "report_3"))

    })

}

shinyApp(ui,server)

1 ответ

Решение

Вы можете добавить id на ваш sidebarMenu а затем выберите tabName от и observer

library(shiny)
library(shinydashboard)


ui <- dashboardPage(
    dashboardHeader(
        title = "Shiny"
    ),

    dashboardSidebar(
        sidebarMenu(id = "tabs",
            menuItemOutput("Section_1")
        )
    ),

    dashboardBody(

        tabItems(
            tabItem("report_1",h1("a")),
            tabItem("report_2",h1("b")),
            tabItem("report_3",h1("c"))
        )
    )
)


server <- function(session, input, output) {

    output$Section_1 <- renderMenu({

        menuItem("Section_1", tabName = "section_1", icon = icon("align-justify"), startExpanded = TRUE,
                 menuSubItem("Subsection 1", tabName = "report_1"),
                 menuSubItem("Subsection 2", tabName = "report_2"),
                 menuSubItem("Subsection 3", tabName = "report_3")
        )

    })

    observe({
        updateTabItems(session, "tabs", selected = "report_1")
    })
}

shinyApp(ui,server)
Другие вопросы по тегам