#r #shiny
Вопрос:
Приведенное ниже приложение обновляет URL-адрес на основе строки, выбранной в таблице DT, и выбранной вкладки. Но что происходит, когда пользователь копирует URL-адрес на другую вкладку, он открывает не конкретную вкладку, а страницу по умолчанию (url : http://127.0.0.1:XXXX/?tabs=tabs3)
Пожалуйста, следуйте инструкциям для справки
- Нажмите на любую строку(скажем, 3) в таблице DT (вкладка «Сводка»).
- вкладка 3 открывает печать как 3 (это нормально)
- Теперь скопируйте этот URL-адрес (URL tab3)
- Вставьте в другую вкладку (теперь она возвращается только на вкладку «Сводка», а не на вкладку 3)
library(shiny)
library(DT)
ui <- function(request) {
shinyUI(navbarPage(
"Title", id = "inTabset", selected = "Summary",
tabsetPanel(id = "tabs",
# tabPanel(
# "Readme",tags$head(tags$link(rel = "stylesheet", type="text/css", href="style.css"))
# ),
tabPanel(
"Summary",
dataTableOutput("tab")))
)
)
}
server <- function(input, output, session) {
# Make sure you only bookmark the tabsetPanel
setBookmarkExclude(isolate(names(input)[names(input) != "tabs"]))
# Every time the tab changes, store the app state as URL bookmark
observeEvent(input$tabs, {
session$doBookmark()
})
# Set callback that stores the app state in the URL
onBookmarked(function(url) {
updateQueryString(paste0("?tabs=", input$tabs), mode = "replace")
})
# Set callback to restore the app state from the URL
onRestore(function(state) {
updateTabsetPanel(inputId = "tabs", selected = getQueryString()[["tabs"]])
})
output$tab <- renderDataTable({
datatable(iris,selection = 'single')
})
observeEvent(input$tab_rows_selected, {
insertTab(inputId = "tabs",
tabPanel(paste0("tabs",input$tab_rows_selected), "This a dynamically-added tab",htmlOutput("sd")),
target = "Summary",select = TRUE
)
})
output$sd <- renderUI({
as.character(input$tab_rows_selected)
})
}
enableBookmarking("url")
shinyApp(ui, server)