如何将变量传递给 widget_html
How do you pass variables into widget_html
问题
Custom widget HTML 上 htmlwidgets.org 页面的最后一部分说您可以通过创建名为 <widget_name>_html
[=25= 的函数将自己的 html 添加到小部件]
如何将变量传递给这个函数?
例子
我创建了一个名为 myWidgetHTML 和 运行 htmlwidgets::scaffoldWidget(name = "myHTML”)
的新包。该软件包托管在我的 github page
上
在生成的 R/myHTML.R
文件中,我创建了函数
#' @import htmltools
myHTML_html <- function(id, class, style, ...){
myString <- "hello world"
tags$p(myString)
}
构建和 运行ning 小部件按预期生成字符串 hello world
library(myWidgetHTML)
myHTML(message = "")
我想不通的是如何编写函数以便我可以将变量 myString
传递给它:
#' @import htmltools
#' @export
myHTML_html <- function(id, class, style, myString, ...){
tags$p(myString)
}
通过 source code for the widgets 并没有说明任何问题,因为相关部分(复制在下面)表明它通过 ...
接受进一步的论点,但我看不到将它们发送到哪里来自.
widget_html <- function(name, package, id, style, class, inline = FALSE, ...){
# attempt to lookup custom html function for widget
fn <- tryCatch(get(paste0(name, "_html"),
asNamespace(package),
inherits = FALSE),
error = function(e) NULL)
# call the custom function if we have one, otherwise create a div
if (is.function(fn)) {
fn(id = id, style = style, class = class, ...)
} else if (inline) {
tags$span(id = id, style = style, class = class)
} else {
tags$div(id = id, style = style, class = class)
}
}
关闭这个问题,官方回答是不可能的。
参考:
This tweet 来自@timelyportfolio
as of now, no real way to accomplish this
我认为一个可能的解决方案是将 x
传递给 widget_html
,因此将其作为一个潜在的解决方案提出。但是,@jjallaire 指出这在与 Shiny
一起使用时不起作用
参考:
Issue 212
The problem is that within Shiny applications "x" is not yet known at the time widget_html is called. The best way to accomplish this is to mutate the DOM as needed within the first call to renderValue on the JavaScript side.
问题
Custom widget HTML 上 htmlwidgets.org 页面的最后一部分说您可以通过创建名为 <widget_name>_html
[=25= 的函数将自己的 html 添加到小部件]
如何将变量传递给这个函数?
例子
我创建了一个名为 myWidgetHTML 和 运行 htmlwidgets::scaffoldWidget(name = "myHTML”)
的新包。该软件包托管在我的 github page
在生成的 R/myHTML.R
文件中,我创建了函数
#' @import htmltools
myHTML_html <- function(id, class, style, ...){
myString <- "hello world"
tags$p(myString)
}
构建和 运行ning 小部件按预期生成字符串 hello world
library(myWidgetHTML)
myHTML(message = "")
我想不通的是如何编写函数以便我可以将变量 myString
传递给它:
#' @import htmltools
#' @export
myHTML_html <- function(id, class, style, myString, ...){
tags$p(myString)
}
通过 source code for the widgets 并没有说明任何问题,因为相关部分(复制在下面)表明它通过 ...
接受进一步的论点,但我看不到将它们发送到哪里来自.
widget_html <- function(name, package, id, style, class, inline = FALSE, ...){
# attempt to lookup custom html function for widget
fn <- tryCatch(get(paste0(name, "_html"),
asNamespace(package),
inherits = FALSE),
error = function(e) NULL)
# call the custom function if we have one, otherwise create a div
if (is.function(fn)) {
fn(id = id, style = style, class = class, ...)
} else if (inline) {
tags$span(id = id, style = style, class = class)
} else {
tags$div(id = id, style = style, class = class)
}
}
关闭这个问题,官方回答是不可能的。
参考: This tweet 来自@timelyportfolio
as of now, no real way to accomplish this
我认为一个可能的解决方案是将 x
传递给 widget_html
,因此将其作为一个潜在的解决方案提出。但是,@jjallaire 指出这在与 Shiny
参考: Issue 212
The problem is that within Shiny applications "x" is not yet known at the time widget_html is called. The best way to accomplish this is to mutate the DOM as needed within the first call to renderValue on the JavaScript side.