您好我正在编写一个闪亮的应用程序,在服务器端代码中,当用户单击运行按钮时,我正在调用一个函数。我遇到的问题是该功能需要大约10-25分钟才能运行,用户可能会在此期间多次单击该按钮。函数运行结束后,我向用户显示已下载文件的输出路径并关闭App。如何防止用户多次单击按钮,如功能运行时的加载屏幕?
observeEvent(input$runprocess, {
rundownload()
showModal(modalDialog(title ="Output folder: XYZ path",
actionButton("close", "Exit"),footer = NULL,
size = c("m"), easyClose = FALSE))
})
observeEvent(input$close, {
js$closeWindow()
stopApp()
})
答案 0 :(得分:0)
通过添加一个额外的modalDialog:
observeEvent(input$runprocess, {
showModal(modalDialog(p("Start downloading. This might take a while"),
title = "download started",
#etc etc
))
rundownload()
showModal(modalDialog(title ="Output folder: XYZ path",
actionButton("close", "Exit"),footer = NULL,
size = c("m"), easyClose = FALSE))
})
observeEvent(input$close, {
js$closeWindow()
stopApp()
})
为防止用户多次单击“运行”按钮,您可以使用shinyjs
在单击后隐藏它。参见eg:Hide shiny output