如果从服务器端呈现选项卡,则Shinydashboard书签不会为活动选项卡添加书签

时间:2019-10-28 12:15:15

标签: r shiny shinydashboard

当加载带有多个标签的带书签的闪亮仪表板时,以前处于活动状态的标签应在加载时再次处于活动状态-即,如果仪表板具有2个标签并且书签按钮位于标签2上,则当书签为已加载。如果两个选项卡均在ui中创建,则此方法正确运行。

但是,如果选项卡2是通过renderMenu在服务器端创建的,则在加载书签时,选项卡1而不是选项卡2是活动的。

以下示例显示了此行为。如果将书签移到选项卡3,它将可以正常工作。

library(shiny)
library(shinydashboard)

enableBookmarking(store = "server")

ui <- function(request){
    dashboardPage(
        dashboardHeader(title = "demo"),
        dashboardSidebar(
            sidebarMenu(id="sidebar",
                        menuItem("Static 1", tabName = "static1"),
                        sidebarMenuOutput("menu"),
                        menuItem("Static 2", tabName = "static2")
            )
        ),
        dashboardBody(
            tabItems(
                tabItem(tabName="static1", h2("something1")),
                tabItem(tabName="dynamic", h2("something2"), bookmarkButton()),
                tabItem(tabName="static2", h2("something3"))
            )
        )
    )
}

server <- function(input, output) {
    output$menu <- renderMenu({
        sidebarMenu(
            menuItem("Dynamic", tabName="dynamic")
        )
    })
}

shinyApp(ui = ui, server = server)

我希望书签应该加载活动选项卡,而不管该选项卡是在ui中创建还是由服务器呈现。

编辑-我也尝试将sidebarMenu id传递给服务器,但这没有用:

server <- function(input, output) {
    output$menu <- renderMenu({
        sidebarMenu(id="sidebar",
            menuItem("Dynamic", tabName="dynamic")
        )
    })
}

0 个答案:

没有答案