Я хочу создать свою страницу Shinydashboard программно, а также мне нужно программно изменить показанную страницу, например, после успешного входа. Я внимательно следил за примером в ?updateTabItems
, но почему-то кажется, что updateTabItems
не работает, когда контент генерируется программно. Вот мой код, который не показывает страницу 2 после нажатия кнопки входа в систему.
# create ui that is created dynamically from server logic
ui <- dashboardPage(
dashboardHeader(title = "switch tabs"),
dashboardSidebar(sidebarMenu(sidebarMenuOutput("sidebarMenu"))),
dashboardBody(uiOutput("body"))
)
# build ui of login page
uiLogin = function(id) {
ns = NS(id)
actionButton( ns("loginButton"), "Login")
}
# server logic of login page
module = function(input, outpust, session) {
# observe login button
observeEvent(input$loginButton, {
updateTabItems(session, "sidebarID", selected = "loginTab")
cat("trying to switch tab\n")
})
}
# server logic
server <- function(input, output, session) {
# sidebar menu
output$sidebarMenu <- renderMenu({
sidebarMenu(
id="sidebarID",
menuItem("Login", tabName = "loginTab", selected=TRUE),
menuItem("Page 2", tabName = "page2")
)
})
# body
output$body <- renderUI(
tabItems(
tabItem(tabName="loginTab", uiLogin("loginPage")),
tabItem(tabName="page2", tags$h2("Page 2"))
)
)
# server logic of login page
callModule(module, "loginPage")
}
shinyApp(ui, server)
Интересно, что даже при входе в систему не отображается даже страница входа, хотя selected=TRUE
был установлен в tabItem
. Моя блестящая версия 1.2.0 и Shinydashboard на версии 0.7.1.
Любые предложения, как я могу обновить представление программно, очень ценятся?