我使用Shiny模式为我的用户提供简短的问卷。默认情况下隐藏此调查问卷的某些部分,并且仅在用户从可见输入中选择某个特定值时显示。
第一次使用模态时一切正常,但是如果要重新提交模式,则不会显示调查问卷的隐藏部分。这是因为在移除模态后Shiny会保留模态内所有输入的值。如果你重新打开它,那么这些值已经被设置在引擎盖上,即使从用户角度来看它看起来很正常,也不会触发观察者。我试图尝试使用reactiveValues来克服这个问题,但到目前为止还没有运气。
显示下面发布的问题的最小示例。重现的步骤:
现在问卷的第二部分没有显示。
library(shiny)
library(shinyJS)
ui <- fluidPage(
useShinyjs(),
actionButton("open", "Open questionarre")
)
server <- function(input, output) {
observeEvent(input$open, {
showModal(modalDialog(
title = "Open the modal",
radioButtons(
"radio",
"Click 'Yes' to show additinal inputs.",
choices = c("Yes", "No"),
selected = character(0)
),
shinyjs::hidden(
div(id = "hiddenContent",
checkboxGroupInput(
"checkboxes", "What’s up?",
choices = list(
"Good",
"Bad"
)
)
)
),
footer = tagList(
actionButton("cancel", "Cancel", class = "btn-light-grey"),
actionButton("submit", "Submit")
)
))
})
# Hiding and showing mechanism
observeEvent(input$radio, {
print(input$radio)
if (input$radio == "Yes") {
shinyjs::show("hiddenContent")
} else {
shinyjs::hide("hiddenContent")
reset("checkboxes")
}
})
observeEvent(input$submit, {
print("Saving")
removeModal()
})
observeEvent(input$cancel, {
print("Canceling")
removeModal()
})
}
# Run the application
shinyApp(ui = ui, server = server)