我正在开发一个相当大的闪亮应用,并使用this talk on shinydevcon中的方法来模块化它。
现在我尝试使用包shinyFiles
来获得"另存为"输入对话框:
library(shiny)
library(shinyFiles)
# Dummy module for MCVE
saveModule <- function(input, output, session) {
# Taken straight from shinyFilesExample()
volumes <- getVolumes()
shinyFileSave(input, NS("test")("save"), roots = volumes, session = session)
}
server <- function(input, output, session) {
callModule(saveModule, "test")
}
ui <- shinyUI(fluidPage(
# Taken straight from shinyFilesExample()
shinySaveButton(NS("test")("save"), 'Save file', 'Save file as...', filetype=list(text='txt', picture=c('jpeg', 'jpg'))))
)
runGadget(app = ui, server = server, viewer = dialogViewer(title = "test"))
尝试浏览文件夹或切换根目录时,此功能无法正常工作。
从callModule
中提取代码时,它确实有效,但正如我所说,实际的用例有一个相当大的应用程序,我不想让代码来自app.R
。单个模块。
有没有办法让shinyFiles
在callModule
上下文中正常运行?还是其他一些可行的解决方法?
供参考,这是一个有效的server
:
server <- function(input, output, session) {
volumes <- getVolumes()
shinyFileSave(input, NS("test")("save"), roots = volumes, session = session)
}
上面有ui
和runGadget
。