关于这个问题已经有类似的帖子了(例如,如何更新闪亮的fileInput对象?),但我仍然无法理解,在使用fileInput
小部件之后,如何强制Shiny忘记input$file
的值。
当一个人想用actionButton
(在我的例子中称为"Submit"
)触发文件的上传,然后用另一个actionButton
("Reset"
在这里)重置它的值时,这个问题就变得很麻烦了。当再次单击“提交”按钮时,很明显输入的$file值仍然存在。
我尝试使用一些推荐的解决方案:shinyjs
打包并使用renderUI
/uiOutput
刷新fileInput
模块,但仍然没有结果。
这是我的代码:
服务器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))
})
})
用户界面。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')
)
))
如果有任何帮助,我将不胜感激。
我知道这是一篇旧文章,但您可以通过在服务器上从头开始重建来重置输入。
在ui中。R你可以把:
...
uiOutput('file1_ui') ## instead of fileInput('file1', label = NULL)
...
和服务器。r加上这个:
...
output$file1_ui <- renderUI({
input$reset ## Create a dependency with the reset button
fileInput('file1', label = NULL)
})
...
输入$file1
由Shiny缓存,因此在下一次上传之前不会更改。
因为你想要一个文件名变量映射到输入$file1$name
在大多数情况下,但是当单击重置按钮时重置为NULL
,你需要创建另一个层并保持这种关系。
>
您可以创建变量upload\u state
,使用文件上载事件将其设置为upload
,使用重置按钮将其设置为reset
。
根据upload\u state
值,使用反应式表达式,该表达式将采用input$file1$name
或NULL
。
无需使用submit
按钮。
library(shiny)
ui <- shinyUI(bootstrapPage(
headerPanel("Reset / Submit file input example"),
sidebarPanel(
fileInput('file1', label = NULL),
fluidRow(
column(4,
actionButton('reset', 'Reset Input')
))
),
mainPanel(
h4("Summary"),
verbatimTextOutput("summary")
)
))
server <- shinyServer(function(input, output, session) {
values <- reactiveValues(
upload_state = NULL
)
observeEvent(input$file1, {
values$upload_state <- 'uploaded'
})
observeEvent(input$reset, {
values$upload_state <- 'reset'
})
file_input <- reactive({
if (is.null(values$upload_state)) {
return(NULL)
} else if (values$upload_state == 'uploaded') {
return(input$file1)
} else if (values$upload_state == 'reset') {
return(NULL)
}
})
output$summary <- renderText({
return(paste("Uploaded file:", file_input()$name))
})
})
shinyApp(ui = ui, server = server)
Shining Panda是一个Jenkins的插件,支持Python多个配置环境的持续构建与测试。 支持构建工具(virtualenv builder, tox builder),支持测试相关的工具:nose,coverage,pylint
问题内容: 我怎样才能 重新 在一个领域? 我希望它从头开始计算。 问题答案: 您可以使用以下方法重置计数器: 对于InnoDB,您不能将值设置为小于或等于当前最大索引。(引自ViralPatel): 请注意,您不能将计数器重置为小于或等于已使用的任何值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前的最大值加1。对于InnoDB,如果该值小于
问题内容: 在PostgreSQL中,我可以做这样的事情: 是否有Oracle等效产品? 问题答案: 这是一个很好的过程,可以将Oracle专家Tom Kyte的任何序列重置为0 。在下面的链接中也对正反两方面进行了精彩的讨论。
我用登录名和密码启动了主窗口(class)和模式窗口(class)。而主舞台= 如果用户有效,则关闭模式窗口。如何重置主阶段的效果 谢谢主要类别: 公共类主应用程序扩展{ } 登录类: 公共类登录{ }
我正在使用kartik yii2小部件fileinput。我将“maxFileSize”设置为1024。当上传的文件超过允许的最大大小时,会显示错误消息,我想更改此错误文本并用格鲁吉亚语显示。我怎样才能做到这一点?这是我的密码: 我需要更改此错误消息:
模块: fileinput 目的: 创建命令行过滤程序. Python 版本: ? 描述 让我们从 fileinput 模块开始这个系列的学习吧. 这是一个非常有用的模块, 用于创建处理文本文件中过滤信息的命令行程序. 例如, 最近为我的朋友 Patrick 写了个应用 m3utorss , 用于将一些小demo转成podcastable格式便于记录. 程序的输入是一个或多个m3u文件, 列出了所