问题:我有以下带有两个选项卡的应用程序。这些选项卡中的每一个都包含在一个模块 ( first_module, second_module) 中。在每个选项卡中都会selectizeInput显示一个,我可以在其中选择各种选项。
目标:如果我在选项卡 1 上选择例如亚马逊并切换到选项卡 2,我想实现这一点,亚马逊也将在选项卡 2 中被选中。
有关如何修改此示例应用程序的任何想法?非常感谢!!
first_module_ui <- function(id){
ns <- NS(id)
mainPanel(width = 12,
fluidRow(
column(4, uiOutput(ns("filter_clients")))
)
)
}
first_module_server <- function(input, output, session, context){
output$filter_clients <- renderUI({
selectizeInput(inputId = session$ns("select_clients"),
label = "Client",
choices = c("All", "Google", "Amazon", "Facebook"),
selected = "All",
multiple = TRUE,
width = "100%")
})
observeEvent(context(), {
print(context())
updateSelectizeInput(session,
inputId = session$ns("select_clients"),
label = "Client",
choices = c("All", "Google", "Amazon", "Facebook"),
selected = context(),
server = TRUE)
})
return(reactive({input$select_clients}))
}
second_module_ui <- function(id){
ns <- NS(id)
mainPanel(width = 12,
fluidRow(
column(4, uiOutput(ns("filter_clients")))
)
)
}
second_module_server <- function(input, output, session, context){
output$filter_clients <- renderUI({
selectizeInput(inputId = session$ns("select_clients"),
label = "Client",
choices = c("All", "Google", "Amazon", "Facebook"),
selected = "All",
multiple = TRUE,
width = "100%")
})
observeEvent(context(), {
print(context())
updateSelectizeInput(session,
inputId = session$ns("select_clients"),
label = "Client",
choices = c("All", "Google", "Amazon", "Facebook"),
selected = context(),
server = TRUE)
})
return(reactive({input$select_clients}))
}
ui <- fluidPage(
tabsetPanel(
tabPanel("First Module",
first_module_ui("first_ui")
),
tabPanel("Second Module",
second_module_ui("second_ui")
)
)
)
server <- function(input, output) {
context <- callModule(first_module_server,
"first_ui",
context)
context <- callModule(second_module_server,
"second_ui",
context)
}
shinyApp(ui = ui, server = server)