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)