J'utilise des modules dans mon application brillante pour afficher le contenu de différents tabPanels. J'aimerais pouvoir accéder au second onglet en cliquant sur un bouton. J'ai le code suivant:Comment s'assurer que l'application brillante sait quel onglet est actuellement ouvert lors de l'utilisation des modules?
library(shiny)
library(shinydashboard)
moduleUI <- function(id){
ns <- NS(id)
sidebarPanel(
actionButton(ns("action1"), label = "Go to tab 2")
)
}
module <- function(input, output, session, openTab){
observeEvent(input$action1, {
openTab("two")
})
return(openTab)
}
ui <- fluidPage(
navlistPanel(id = "tabsPanel",
tabPanel("one", moduleUI("first")),
tabPanel("two", moduleUI("second"))
))
server <- function(input, output, session){
openTab <- reactiveVal()
openTab("one")
openTab <- callModule(module,"first", openTab)
openTab <- callModule(module,"second", openTab)
observeEvent(openTab(), {
updateTabItems(session, "tabsPanel", openTab())
})
}
shinyApp(ui = ui, server = server)
Cependant, cela ne fonctionne qu'une seule fois. Le problème, je pense, est que le module ne sait pas quand un onglet est modifié dans l'application. Par conséquent je cherche un moyen de m'assurer que le module sait quel onglet est ouvert de sorte que le bouton d'action fonctionne plus qu'une fois. J'ai envisagé d'utiliser l'entrée $ tabsPanel mais je ne sais pas comment l'implémenter. L'aide serait grandement appréciée.
vous pouvez joindre votre '' l'intérieur tabPanel' div' et attribuer un identifiant à 'div', de cette façon, vous pouvez savoir qui' tab' on accède – parth