如何将静态文件添加到闪亮的 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 中执行并成功。
我尝试使用 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 中执行并成功。