我想使用闪亮的js函数将数据从javascript发送到R,但无法正常工作。我所做的是一个简单的示例,其中setinputValue将“ noone”发送给“ too” input $ too
代码如下:
library(shiny)
ui <- fluidPage(
HTML("<script>
$( document ).ready(function() {
Shiny.setInputValue('too', 'noone');
});</script>"),
textOutput("table")
)
server <- function(input, output) {
output$table <- renderPrint(input$too)
}
shinyApp(ui,server)
我得到的js错误是:Shiny.setInputValue不是函数
答案 0 :(得分:6)
它不适用于$( document ).ready(function()
,但适用于$( document ).on("shiny:sessioninitialized", function(event) {
:
library(shiny)
ui <- fluidPage(
HTML('<script>
$( document ).on("shiny:sessioninitialized", function(event) {
Shiny.onInputChange("too", "noone");
});</script>'),
textOutput("table")
)
server <- function(input, output) {
output$table <- renderPrint(input$too)
}
shinyApp(ui,server)
对此的原因在tutorial中给出:您不能过早调用该函数,需要一点时间直到Shiny准备好更新输入值:
在message.js中,我们将代码包装在$(document).ready(function(){...}中。此jQuery函数将告诉浏览器仅在页面,即文档一次运行内部代码。准备好执行JavaScript代码的对象模型(DOM),请注意,如果过早激活该代码(即在加载图像之前),我们还无法为其附加事件处理程序。在将事件处理程序附加到图像之前,请确保该图像存在。 ```
答案 1 :(得分:0)
我只想指出,shosaco在答案中调用的函数与原始帖子有所不同,从其无法正常工作的原因尚不清楚。
Shiny.setInputValue('too', 'noone');
到
Shiny.onInputChange("too", "noone");