我在 Shiny 中有一个 HTML 按钮,单击该按钮时会调用 JavaScript 函数geocodeAddressStreet(...)
in a .js
文件在/www
目录:
tags$body(tags$input(type = "button",
value = "Next",
id = "button1",
onClick = "geocodeAddressStreet(houseNumber,streetName,addressCity,addressState)"))),
但是我不知道如何让这个按钮在单击时调用第二个文件,比方说foo.R
。两个程序独立运行,但似乎没有办法添加一个inputId
到 Shiny 中的 HTML 元素。我们目前有两个不同的按钮,其中一个调用 R 代码,另一个调用 JavaScript 代码,但这显然是一个不切实际的解决方案。
那么您想要一个按钮,当您单击它时,JavaScript 函数和一些 R 代码都会被调用?我能够用onclick
函数从shinyjs https://github.com/daattali/shinyjs包(免责声明:我写了这个包)
library(shinyjs)
jsCode <- "
shinyjs.geocodeAddr = function(params) {
alert('JavaScript called!');
// geocodeAddressStreet(...)
}
"
runApp(shinyApp(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode),
actionButton("btn", "Click me")
),
server = function(input, output, session) {
onclick("btn", {
js$geocodeAddr()
cat("R called as well")
})
}
))
基本上,onclick
function 是一个 R 函数,单击按钮时将运行。在其中,您显然可以轻松调用 R 代码,但您也可以使用shinyjs 包调用 JS 代码——这就是我调用js$geocodeAddr
。看着那(这extendShinyjs
功能。或者,不使用extendShinyjs()
,您也可以使用通常的方法session$sendCustomMessage(...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)