4

如何使用 shinydashboard 在我的应用程序中包含远程 JS 文件?我知道有这个includeScript功能。我试过了

...

# using shiny dashboard
ui <- dashboardPage(

  includeScript("http://the.path.to/my/js-file.js")

  dashboardHeader(
    title = "My title",
    titleWidth = 400
  ),

...

这会导致错误:

Error in tagAssert(header, type = "header", class = "main-header") : 
Expected tag to be of type header

我试图将调用放在其他地方,将其与 结合起来tags$head,将 JS 文件存储在本地并使用本地路径引用加载它,但无济于事。

所以我被以下问题困住了?

  1. 我可以实际使用includeScript远程资源的路径吗?
  2. 我需要在哪里放置加载 JS 文件的指令(以及 JS 文件需要驻留在哪里)?

@daattali 提出了一个解决方案,用于使用 纯基于 Shiny 的实现(没有 shinydashboard)tags$head,但这似乎不适用于 shinydashboard。

4

1 回答 1

14

您可以使用标签的src参数包含远程 JS 文件script

library(shiny)
jsfile <- "https://gist.githack.com/daattali/7519b627cb9a3c5cebcb/raw/91e8c041d8fe4010c01fe974c6a35d6dd465f92f/jstest.js"

runApp(shinyApp(
  ui = fluidPage(
    tags$head(tags$script(src = jsfile))
  ),
  server = function(input, output) {
  }
))

编辑:好的,所以你希望它与闪亮的仪表板一起使用。为什么你的方式行不通是有道理的。查看dashboardPage. 第一个论点是header。您不能只是开始提供要包含的标签/UI 元素。includescript 或任何其他此类元素应放在dashboardBody 中。例如

library(shiny)
library(shinydashboard)
jsfile <- "https://gist.githack.com/daattali/7519b627cb9a3c5cebcb/raw/91e8c041d8fe4010c01fe974c6a35d6dd465f92f/jstest.js"

runApp(shinyApp(
  ui = dashboardPage(
    header = dashboardHeader(),
    sidebar = dashboardSidebar(),
    body = dashboardBody(
      tags$head(tags$script(src = jsfile))
    )
  ),
  server = function(input, output) {
  }
))
于 2015-08-28T23:53:45.563 回答