【发布时间】:2017-10-27 11:23:41
【问题描述】:
已经有关于这个问题的类似帖子(例如how can I update a shiny fileInput object?),但我仍然无法弄清楚在使用fileInput 小部件后如何迫使Shiny 忘记input$file 的值。
当一个人想用actionButton(在我的例子中称为"Submit")触发文件上传,然后用另一个actionButton(这里是"Reset")重置它的值时,这个问题就变得烦人了。 再次单击“提交”按钮时,很明显 input$file 值仍然存在。
我尝试使用一些推荐的解决方案:shinyjs 包并用renderUI/uiOutput 刷新fileInput 模块 - 但仍然没有结果。
这是我的代码:
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))
})
})
ui.R
shinyUI(bootstrapPage(
headerPanel('Reset / Submit file input example'),
sidebarPanel(
uiOutput('resettableInput'),
fluidRow(
column(4,
actionButton('reset', 'Reset All')
),
column(4,
actionButton('submit', 'Submit')
)
)
),
mainPanel(
h4('Summary'),
verbatimTextOutput('summary')
)
))
如果有任何帮助,我将不胜感激。
【问题讨论】: