我有一些非常简单的shinydashboard
代码:
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)
在上面的代码中,有一些HTML可确保在应用启动时tab
选项未展开。但是,如果用户折叠其中一个选项卡,然后取消折叠,则另一个选项卡会自动折叠。这意味着侧边栏无法返回到两个标签未被折叠的原始状态。如何解决这个问题?
更新:我已经修改了原始帖子中的代码。此新版本具有observe(print(input$tab))
位,可根据选择的选项卡修改输出。以下GyD提供的答案回答了我原来的问题,但它并没有让我保留我需要的observe(print(input$tab))
功能。
答案 0 :(得分:1)
此行为不是由您的js代码引起的,而是$scope.limit={
startIndex :0,
itemCount : 10
}
$scope.next = function(){
$scope.limit.startIndex += $scope.limit.itemCount;
}
的原因。如果选择了选项卡,则另一个选项卡将自动折叠。
虽然我不知道如何通过js或其他东西设置这个,但我想出的最简单的解决方案是使用2 sidebarMenu
- s而不是1。
同样,这可能不是你想要的,但它应该解决崩溃的问题。
代码:
sidebarMenu