动态菜单:带有子项的 ID 项

Dynamic menu: ID item with subitems

我有一个仪表板可以帮助用户跟踪杂务列表。琐事在 sidebarMenu 中列为 menuSubItem。因此,如果已经创建了与琐事相对应的文件,我希望在 menuSubItem.

旁边放置一个复选图标

我很难理解为什么 menuSubItem 会等到我点击 test 然后再点击 home 才渲染...我试过打印out input$test_subitems 似乎无法跟踪何时选择了 test

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  skin = "blue",

  dashboardHeader(title = "Dynamic Menu"),
  dashboardSidebar(
    sidebarMenu(
      id = "sidebarMenu",
      menuItem("Home", tabName = "home", icon = icon("home")),
      menuItem("Item with subitems", tabName = "test",
               uiOutput("test_subitems"))
    )
  ),

  dashboardBody( id = "dashboardBody" )
)

server <- shinyServer(function(input, output, session) {
  observe(cat('1:', input$sidebarMenu, '\n'))

  output$test_subitems <- renderUI({
    print(input$sidebarMenu)
    tabs <- c("st1","st2")
    lapply(tabs, function(tab) {
      menuSubItem(icon = NULL, paste('Test:', tab), tabName = tab)
    })
  })

  session$onSessionEnded(stopApp)
})

shinyApp(ui, server)

虽然我没有找到用子项目标识项目的方法,但 suspendWhenHidden 似乎对我有用:

outputOptions(output, "test_subitems", suspendWhenHidden = FALSE)