Как использовать блестящие функции JavaScript? - PullRequest
0 голосов
/ 04 января 2019

Я хочу отправить данные из javascript в R, используя функцию блестящей js, но не работает.То, что я сделал, это простой пример, в котором 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 не является функцией

1 Ответ

0 голосов
/ 04 января 2019

Не работает с $( 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)

Причина этого указана в учебнике : Вы не можете вызвать функцию слишком быстро, вам нужно немного времени, пока Shiny не будет готов обновить входное значение:

в message.js, мы обернули наш код в $ (document) .ready (function () {...}. Эта функция jQuery сообщит браузеру запускать код внутри только один раз на странице, то есть в Document Объектная модель (DOM) готова для выполнения кода JavaScript. Обратите внимание, что когда мы активируем этот код слишком рано, т.е. до загрузки изображения, мы еще не можем прикрепить к нему обработчик событий. Другими словами, здесь мы хотим быть Убедитесь, что изображение существует, прежде чем присоединять к нему обработчик событий. `` `

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...