2016-11-28 1 views
0

반짝이는 대시 보드의 사이드 바에있는 하위 메뉴를 수동으로 확장하려고합니다. updateTabItems 함수를 사용하면 탭으로 이동할 수 있지만 메뉴가 확장되지는 않습니다.반짝이는 하위 메뉴 항목을 수동으로 확대합니다.

여기에 대한 질문에 대한 재현 가능한 답변을 찾고 있습니다. how to manually expand a submenu in a shiny dashboard side bar 여기에는 좋은 예제와 답변이 있지만 구현되지 않았습니다.

답변

1

여기에 referred answer을 기반으로하는 작동 코드가 있습니다. 이 경우 자바 스크립트는 tabName을 선택기로 사용하여 active 클래스를 트리 메뉴에 추가합니다.

library(shiny) 
library(shinydashboard) 
library(shinyjs) 

ui <- dashboardPage(
    dashboardHeader(title = "Simple tabs"), 
    dashboardSidebar(
    sidebarMenu(
     id = "tabs", 
     actionButton('switchtab', 'Switch tab'), 
     menuItem("Widgets", tabName = "widgets", icon = icon("th")), 
     menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard"), 
       menuSubItem("Sub Menu 1",icon = icon("folder-open"), tabName = "subMenu1") 
    ) 
    ) 
), 
    dashboardBody(
    useShinyjs(), 
    extendShinyjs(text = "shinyjs.activateTab = function(name){ 
        setTimeout(function(){ 
        $('a[href$=' + '\"#shiny-tab-' + name + '\"' + ']').closest('li').addClass('active') 
        }, 200); 
        }" 
    ), 
    tabItems(
     tabItem(tabName = "subMenu1", 
       h2("Dashboard tab/Sub menu 1 content") 
    ), 
     tabItem(tabName = "widgets", 
       h2("Widgets tab content") 
    ) 
    ) 
) 
) 

server <- function(input, output, session) { 
    observeEvent(input$switchtab, { 
    newtab <- switch(input$tabs, 
        "subMenu1" = "widgets", 
        "widgets" = "subMenu1" 
    ) 
    updateTabItems(session, "tabs", newtab) 
    if (newtab == "subMenu1") 
     js$activateTab("dashboard") 
    }) 
} 

shinyApp(ui, server) 
관련 문제