在Shiny中使用includeHTML显示html文件不适用于renderUI()

时间:2019-05-09 17:39:03

标签: shiny leaflet htmlwidgets

我有一个保存的html小部件(来自传单),我想在闪亮的应用程序中显示。

在ui.R中给定includeHTML()时可以使用,但是在使用renderUI()进行动态调用时不能使用。我有很多.html文件,我希望用户通过选择输入来选择它们,因此我需要动态解决方案。

此受欢迎的帖子Display HTML file in Shiny App接受的答案具有动态解决方案,但不适用于我。没有错误,也没有任何呈现。

总结:

工程

ui <- fluidPage(
  includeHTML("foo.html")
)

不起作用

ui <- fluidPage(
  htmlOutput("map")
)

server <- function(input,output){
  output$map <- renderUI({
     includeHTML(path = "foo.html")
   })
}

This帖子也与此相关,但未找到解决方案。

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案: 在 server.R 中,您需要以下内容:

output$inc <- renderUI(includeHTML("./foo.html"))

请使用相对路径。而在ui.R

fluidRow(box(htmlOutput("inc"), width =12))

答案 1 :(得分:0)

问题是编织一个 .Rmd 文件会创建一个带有 <html><head><title><body> 等的 HTML 文档,而 fluidPage() 的作用完全相同。因此,将完整的 HTML 文档包含到 fluidPage() 中会由于冗余而产生问题。幸运的是,有一个非常简单的解决方案:在编织并保存为 .html 文档之前,在 .Rmd 文件的 YAML 标头中使用 output: html_fragment