我如何在Shiny中获得一个并行调用JavaScript和R代码的按钮?
我有一个闪亮的HTML按钮,当点击时,在我如何在Shiny中获得一个并行调用JavaScript和R代码的按钮?,javascript,r,shiny,Javascript,R,Shiny,我有一个闪亮的HTML按钮,当点击时,在/www目录下的.js文件中调用JavaScript函数geocodeAddressStreet(…): tags$body(tags$input(type = "button", value = "Next", id = "button1", onClick = "geocodeAddressStreet(houseNumb
/www
目录下的.js
文件中调用JavaScript函数geocodeAddressStreet(…)
:
tags$body(tags$input(type = "button",
value = "Next",
id = "button1",
onClick = "geocodeAddressStreet(houseNumber,streetName,addressCity,addressState)"))),
但是,我不知道如何让这个按钮在单击时调用第二个文件,比如说
foo.R
。这两个过程都是独立运行的,但似乎无法将inputId
添加到Shining中的HTML元素中。我们目前有两个不同的按钮,一个调用R代码,另一个调用JavaScript代码,但这显然是一个不切实际的解决方案。所以你想要一个按钮,当你点击它时,JavaScript函数和一些R代码都会被调用?我可以通过软件包中的onclick
函数来实现这一点(免责声明:我编写了软件包)
library(shinyjs)
jsCode Inserver.r
你能不能设置一个observe()
当点击按钮时调用脚本?你不需要一个inputId
吗?据我所知,这个按钮只有一个标准的HTML ID。标准的actionButton
shinny函数有什么问题?我们无法让它调用我们需要的JavaScript代码,它位于不同的文件中。actionButton(“name”,“这是一个按钮”,onClick=“geoCodeAddressStreet”)
谢谢!我要试试这个。但是,如何在将JavaScript保存在单独文件中的同时做到这一点?比如代替jsCodeextendShinyjs(script=“path/to/js”)
而不是text
参数。因此我的建议是“看看extendedshinyjs
函数——阅读它的文档,这需要5分钟,但可能会让你的生活更轻松:)(希望如此)
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")
})
}
))