Вы можете использовать id
, updateTabsetPanel
и reactiveValues
, чтобы достичь того, что вам нужно.
Используйте reactiveValue
, чтобы сохранить выбранный номер вашего суб tabPanel
, затем нажмите updateTabsetPanel
чтобы изменить выбранный по умолчанию суб tabPanel
при переключении основного tabPanel
.
Попробуйте следующий код:
Вы можете использовать id
, updateTabsetPanel
и reactiveValues
чтобы достичь того, что вам нужно.
Используйте reactiveValue
, чтобы сохранить выбранный вами суб tabPanel
номер, затем используйте updateTabsetPanel
, чтобы изменить выбранный по умолчанию суб tabPanel
при переключении основного * 1024.*.
Попробуйте следующий код:
shiny::runApp(list(
ui = bootstrapPage(
tabsetPanel(id = "mainTab",
tabPanel("Tab1", tabsetPanel(id = "subTab1",
tabPanel("subTab11",value=1),
tabPanel("subTab12",value=2),
tabPanel("subTab13",value=3),
selected = 1
)),
tabPanel("Tab2", tabsetPanel(id = "subTab2",
tabPanel("subTab21",value=1),
tabPanel("subTab22",value=2),
tabPanel("subTab23",value=3),
selected = 1
))
)
),
server = function(input, output,session) {
current_subtab<-reactiveValues(selected=1)
# when either sub tabPanel change, save the current selected sub tabPanel to reactiveValues
observeEvent(c(input$subTab1,input$subTab2),{
if(input$mainTab=="Tab1"){
current_subtab$selected<-input$subTab1
}else if(input$mainTab=="Tab2"){
current_subtab$selected<-input$subTab2
}
})
# when main tabPanel changed, update the default select subPanel value
observeEvent(input$mainTab,{
if(input$mainTab=="Tab1"){
updateTabsetPanel(session,"subTab1",selected = current_subtab$selected)
}else if(input$mainTab=="Tab2"){
updateTabsetPanel(session,"subTab2",selected = current_subtab$selected)
}
})
}
))