当加载带有多个标签的带书签的闪亮仪表板时,以前处于活动状态的标签应在加载时再次处于活动状态-即,如果仪表板具有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")
)
})
}