我想在我闪亮的应用程序中实现"重置输入"按钮.
这是一个只有两个输入的例子,我正在使用更新函数将值设置回默认值:
library(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("'Reset inputs' button example"),
sidebarPanel(
numericInput("mynumber", "Enter a number", 20),
textInput("mytext", "Enter a text", "test"),
tags$hr(),
actionButton("reset_input", "Reset inputs")
),
mainPanel(
h4("Summary"),
verbatimTextOutput("summary")
)
),
server = function(input, output, session) {
output$summary <- renderText({
return(paste(input$mytext, input$mynumber))
})
observe({
input$reset_input
updateNumericInput(session, "mynumber", value = 20)
updateTextInput(session, "mytext", value = "test")
})
}
))
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否还有一个功能可以将所有内容设置为默认值?这在多个输入的情况下将是有用的.
另外,我不确定我是否使用了observe功能来检测动作按钮何时被击中是处理动作按钮的"正确方法"?
关于这个问题已经有类似的帖子了(例如,如何更新闪亮的fileInput对象?),但我仍然无法弄清楚人们如何强制Shiny忘记使用widget input$file之后的值fileInput.
当一个人想要触发上传文件actionButton("Submit"在我的情况下调用)然后用另一个actionButton("Reset"这里)重置其值时,问题变得唠叨.再次单击"提交"按钮时,很明显输入的$ file值仍然存在.
我尝试使用一些推荐的解决方案:shinyjs包装和刷新fileInput模块带renderUI/ uiOutput- 但仍然没有结果.
这是我的代码:
server.R
shinyServer(function(input, output, session) {
values <- reactiveValues(
file = NULL
)
observeEvent(input$submit, {
values$file <- input$file1
})
observeEvent(input$reset, {
values$file <- NULL
output$resettableInput <- renderUI({
fileInput('file1', label = NULL)
})
}, ignoreNULL = F)
output$summary <- renderText({
return(paste('Uploaded file:', values$file$name))
})
})
Run Code Online (Sandbox Code Playgroud)
ui.R
shinyUI(bootstrapPage(
headerPanel('Reset / Submit file input example'), …Run Code Online (Sandbox Code Playgroud)