【发布时间】:2021-12-23 13:53:38
【问题描述】:
在我的应用程序中,用户可以选择多个会话,这决定了用户可以上传文件的可用文件小部件的数量。
我希望发生的是,当用户更改会话数时 - 例如从 2 到 3,条件面板中的 fileInputs 会重置,为用户再次上传文件做好准备。我一直在尝试结合使用 shinyjs::reset() 和 observe() 来完成此操作,但它似乎不起作用,即如果用户从 2 个会话切换到 3 个会话,文件仍然存在。
下面的基本示例:
library(shiny)
library(shinyjs)
ui <- fluidPage(useShinyjs(),
sidebarLayout(sidebarPanel(
selectInput(
inputId = "numSessions",
label = "Number of sessions",
choices = c("2 Sessions" = 2,
"3 Sessions" = 3)
),
div(
id = "conditional-inputs",
conditionalPanel(
"input.numSessions == 2",
fileInput("s1file", "Session 1"),
fileInput("s2file", "Session 2")
),
conditionalPanel(
"input.numSessions == 3",
fileInput("s1file", "Session 1"),
fileInput("s2file", "Session 2"),
fileInput("s3file", "Session 3")
)
)
),
mainPanel()))
server <- function(input, output) {
observe({
if (input$numSessions == 2) {
reset("conditional-inputs")
} else if (input$numSessions == 3) {
reset("conditional-inputs")
}
})
}
shinyApp(ui = ui, server = server)
【问题讨论】: