【发布时间】:2018-02-12 23:01:40
【问题描述】:
我面临的任务是创建一个反应式文本输入表单。根据单选按钮选择的值,应显示一个或两个 textInput 字段。到目前为止,一切都很好。但是当从 2 个文本输入更改为 1 个时,第二个输入的值会被保留。我尝试使用 observe() 删除 textInput 值,但它没有按预期工作。这是我使用的代码:
#library(shiny)
if (interactive()) {
ui <- fluidPage(
radioButtons("controller", "No. inputs", choices = c(1, 2), selected = 2),
uiOutput("text_fields"),
verbatimTextOutput("test")
)
server <- function(input, output, session) {
output$text_fields <- renderUI({
if(input$controller == 2){
fluidRow(
column(6, textInput("inText_1", label = "Input text 1", value = "")),
column(6, textInput("inText_2", label = "Input text 2", value = ""))
)
}else{
fluidRow(textInput("inText_1", label = "Input text 1", value = ""))
}
})
output$test <- renderText(c(input$inText_1, input$inText_2))
observe({
# The input$controller variable needs to be used inside the observe, correct?
x <- input$controller
# This will delete the values of text input, based on change of x
updateTextInput(session, "inText_1", value = "")
updateTextInput(session, "inText_2", value = "")
})
}
shinyApp(ui, server)
}
【问题讨论】: