如何使用闪亮的javascript函数?

Ike*_*ker 5 javascript r shiny

我想使用闪亮的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)
Run Code Online (Sandbox Code Playgroud)

我得到的js错误是:Shiny.setInputValue不是一个函数

sho*_*aco 8

它不适用于$( 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)
Run Code Online (Sandbox Code Playgroud)

教程中给出了这样做的原因:您不能太早调用该函数,需要一点时间直到Shiny准备好更新输入值:

在message.js中,我们将代码包装在$(document).ready(function(){...}中。此jQuery函数将告诉浏览器仅在页面,即文档对象模型( DOM),可以执行JavaScript代码了。请注意,如果过早激活该代码(即在加载图片之前),我们还无法为其附加事件处理程序。换句话说,在这里我们要确保在将事件处理程序附加到图像之前,该图像存在。