shinydashboard侧边栏无法打开多个选项卡

shinydashboard侧边栏无法打开多个选项卡,shiny,shinydashboard,Shiny,Shinydashboard,我有一些非常简单的shinydashboardcode: library(shiny) library(shinydashboard) ui <- dashboardPage( dashboardHeader(), dashboardSidebar( sidebarMenu(id='tab1', menuItem('tab 1', tabName='tab1', menuSubItem('subtab 1', tabName='tab1subt

我有一些非常简单的
shinydashboard
code:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(
    sidebarMenu(id='tab1',
      menuItem('tab 1', tabName='tab1',
        menuSubItem('subtab 1', tabName='tab1subtab1'),
        menuSubItem('subtab 2', tabName='tab1subtab2')
      ),
      menuItem('tab 2', tabName='tab2',
        menuSubItem('subtab 1', tabName='tab2subtab1'),
        menuSubItem('subtab 2', tabName='tab2subtab2')
      )
    ),
    tags$head(tags$script(HTML('$(document).ready(function() {$(".treeview-menu").css("display", "block");})')))
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName='tab1subtab1',
        verbatimTextOutput('check11')
      ),
      tabItem(tabName='tab1subtab2',
        verbatimTextOutput('check12')
      ),
      tabItem(tabName='tab2subtab1',
        verbatimTextOutput('check21')
      ),
      tabItem(tabName='tab1subtab1',
        verbatimTextOutput('check22')
      )
    )
  )
)

server <- function(input, output, session) {
  observe(print(input$tab))

  output$check11 <- renderPrint(input$tab)
  output$check12 <- renderPrint(input$tab)
  output$check21 <- renderPrint(input$tab)
  output$check22 <- renderPrint(input$tab)
}

shinyApp(ui, server)
库(闪亮)
图书馆(shinydashboard)

ui此行为不是由js代码引起的,它只是
sidebarMenu
的方式。如果选择了一个选项卡,则另一个选项卡将自动折叠

虽然我不知道如何通过js或其他方式设置,但我想到的最简单的解决方案是使用2
sidebarMenu
-s而不是1

同样,这可能不是您想要的,但它应该可以解决崩溃的问题

代码:

库(闪亮)
图书馆(shinydashboard)

谢谢!很简单。事实上,我还有一个问题。在我的原始代码中,我的
服务器
功能允许我使用
观察(打印(输入$tab))
,我可以根据选择的选项卡修改操作。现在看来这是不可能的。我可以使用
observe(print(input$tab1))
,但这只允许选项
tab1subtab1
tab1subtab2
,而不包括
tab2subtab1
tab2subtab2
。有办法解决这个问题吗?js解决方案是解决这个问题的唯一方法吗?是的,我没有考虑到,如果你有2个
侧边栏菜单
,那么你可以每个选择1个项目,这不是你想要的。因此,这种方法不是可行的。
library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(
    sidebarMenu(id='tab',
                menuItem('tab 1', tabName='tab1',
                         menuSubItem('subtab 1', tabName='tab1subtab1'),
                         menuSubItem('subtab 2', tabName='tab1subtab2')
                )
    ),
    sidebarMenu(id='tab2',
                menuItem('tab 2', tabName='tab2',
                         menuSubItem('subtab 1', tabName='tab2subtab1'),
                         menuSubItem('subtab 2', tabName='tab2subtab2')
                )
    ),
    tags$head(tags$script(HTML('$(document).ready(function() {$(".treeview-menu").css("display", "block");})')))
  ),
  dashboardBody()
)

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

shinyApp(ui, server)