Bra*_*man 7 javascript r shiny
我在Shiny中有一个HTML按钮,当单击时,调用目录geocodeAddressStreet(...)中的.js文件中的JavaScript函数/www:
tags$body(tags$input(type = "button",
value = "Next",
id = "button1",
onClick = "geocodeAddressStreet(houseNumber,streetName,addressCity,addressState)"))),
Run Code Online (Sandbox Code Playgroud)
但是,当我点击时,我无法弄清楚如何让这个按钮调用第二个文件foo.R.这两个过程都是独立运行的,但似乎没有办法inputId在Shiny中添加一个HTML元素.我们目前有两个不同的按钮,其中一个调用R代码,另一个调用JavaScript代码,但这显然是一个不切实际的解决方案.
所以你想要一个按钮,当你点击它时,一个javascript函数和一些R代码被调用?我能够使用shinyjs包中的onclick函数执行此操作(免责声明:我编写了包)
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")
})
}
))
Run Code Online (Sandbox Code Playgroud)
基本上,该onclick功能是一个R功能,将在单击按钮时运行.在其中你可以很容易地调用R代码,但你也可以使用shinyjs包调用JS代码 - 这就是我打电话的方式js$geocodeAddr.看看这个extendShinyjs功能.或者,extendShinyjs()您也可以使用通常的方法,而不是使用session$sendCustomMessage(...)