Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何在Shiny中获得一个并行调用JavaScript和R代码的按钮?_Javascript_R_Shiny - Fatal编程技术网

我如何在Shiny中获得一个并行调用JavaScript和R代码的按钮?

我如何在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

我有一个闪亮的HTML按钮,当点击时,在
/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 In
server.r
你能不能设置一个
observe()
当点击按钮时调用脚本?你不需要一个
inputId
吗?据我所知,这个按钮只有一个标准的HTML ID。标准的
actionButton
shinny函数有什么问题?我们无法让它调用我们需要的JavaScript代码,它位于不同的文件中。
actionButton(“name”,“这是一个按钮”,onClick=“geoCodeAddressStreet”)
谢谢!我要试试这个。但是,如何在将JavaScript保存在单独文件中的同时做到这一点?比如代替jsCode
extendShinyjs(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")
    })
  }
))