在R Shiny Modules中使用insertUI和actionButton组合



我试图使用动作按钮和InsertUI的组合来帮助用户输入excel文件。一旦用户单击该按钮,就会出现FileInput框(稍后我将处理FileInput $datapath以创建一个数据框)

在下面的代码中,我尝试:
  1. 在UI代码中使用actionButton生成一个按钮
  2. 通过ObserveEvent使用actionButton来触发InsertUI代码,它应该在1中的按钮中插入fileInput部分代码。点击。我希望文件输入是在代码的服务器部分,而不是代码的UI部分。
  3. 我尝试下面的代码,我可以生成一个按钮,但无法触发observeEvent。任何帮助都是非常感谢的。
library(shiny)
Import.Excel.Data.UI <- function(id){

ns <- NS(id)

tagList(
actionButton(ns("AddExcelDataButton"), label = "Click Here to Add Excel Data"),

)

}

Import.Excel.Data.Server <- function(id){
moduleServer(id, function(input, output, session){
ns <- session$ns
observeEvent(eventExpr = input$AddExcelDataButton,

insertUI(selector="#AddExcelDataButton",
where = "afterEnd",
ui = fileInput(inputId = paste0("File",input$AddExcelDataButton),
label = paste0("Path for File",input$AddExcelDataButton),
multiple  = FALSE)))

})
}

Import.Excel.Data.App <- function(){
ui <- fluidPage(
Import.Excel.Data.UI("File1")
)

server <- function(input, output, session){
Import.Excel.Data.Server("File1")
}

shinyApp(ui, server)
}
Import.Excel.Data.App()

您需要使用命名空间:

insertUI(selector=paste0("#", ns("AddExcelDataButton")), ......

最新更新