У меня есть очень простой shinydashboard
код: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))
, которая мне нужна.
Спасибо! Достаточно легко. –
На самом деле, у меня есть еще одна проблема с этим. В моем исходном коде моя функция «server» я позволил мне «наблюдать (print (input $ tab))», который я мог бы использовать для изменения действий на основе выбранной вкладки. Кажется, сейчас это невозможно. Я мог бы использовать 'наблюдать (print (input $ tab1))', но тогда это будет только для опций 'tab1subtab1' и' tab1subtab2', оставив 'tab2subtab1' и' tab2subtab2'. Есть ли способ обойти это? Будет ли решение js единственным способом исправить это? –
Да, я не принимал во внимание, что если у вас есть 2 'sidebarMenu', тогда вы можете выбрать один элемент, который вам не нужен. Таким образом, этот подход - не выход. – GyD