繁体   English   中英

如何将静态文件添加到闪亮的R包中以进行新的输入控件

[英]How to add static files to shiny R package for new input control

我尝试使用addResourcePath并包含extdata目录(在inst目录中):

在我的自定义输入函数中包含脚本和css文件:

#' @export
multiSelect <- function(inputId, label = NULL, choices = NULL, selected = NULL) {
  args <- lapply(names(choices), function(name) {
    value <- choices[[name]]
    if (value %in% selected) {
      tags$option(value = value, selected = "selected", name)
    } else {
      tags$option(value = value, name)
    }
  })
  args$id = inputId
  args$class = "multiple-select"
  args$multiple = "true"
  tagList(
    singleton(tags$head(
      tags$link(rel = "stylesheet", href = "extdata/multiSelect.css"),
      tags$script(src = "extdata/multiSelect.js")
    )),
    tags$script(paste0("$('#", inputId, "').multipleSelect()")),
    tags$div(
      class = "form-group shiny-input-container",
      tags$label(`for`=inputId, label),
      do.call(tags$select,  args)
    )
  )
}

我已经试过了:

addResourcePath('extdata', system.file('extdata', package='myPackage'))

我在程序包的divosshiny\\R\\shinyUtils.R文件中运行此文件。

但是当我运行服务器并打开时:

http://127.0.0.1:7003/extdata/multiSelect.js

multiSelect.js位于package/inst/extdata/目录中。 我想念什么吗? 假设addResourcePath如何工作?

构建程序包时没有任何错误。 当我拼错我有错误, extdata作为exdata所以我知道该路径是正确的。

函数addResourcePath需要在用户代码中执行(在main server.R中),我添加了一个函数:

#' @export
setupWidgets <- function() {
  addResourcePath('extdata', system.file('extdata', package='divosShiny'))
}

并在server.R中执行了它,并成功了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM