R Shiny: вызов Shiny.onInputChange через сессию $ sendCustomMessage - PullRequest
0 голосов
/ 05 сентября 2018

Я создаю приложение Shiny, в котором есть таблица, в которой пользователь может выбирать и выделять ячейки. Когда пользователь нажимает кнопку «Перейти», приложение должно отправлять позиции выбранных пользователем ячеек на сервер.

Я бью стену с клиентом на сервер связи. Ниже приведен минимальный воспроизводимый пример - почему он не работает?

library(shiny)

script <- '
    Shiny.addCustomMessageHandler("jsCode", function(message) { 
        eval(message.value);
    });
    function hello() {
        console.log("hello from function hello!");
    };
'

ui <- fluidPage(
    tags$head(tags$script(HTML(script))),
    actionButton("go", label = "Run")
)


server <- function(input, output, session) {

    observeEvent(input$go, {

        session$sendCustomMessage(type='jsCode', 'Shiny.onInputChange("foo", "bar");')

        print(input$foo) # output is NULL

        session$sendCustomMessage(type='jsCode', 'hello();')
        # this does not work either. This is how I originally intended to do this. 
        # By defining a javascript function that aggregates the user selection data and 
        # send it to the server via Shiny.onInputChange

    })

}

shinyApp(ui = ui, server = server)

Я видел альтернативные решения, в которых событие onclick привязано к кнопке, а затем оно присваивает случайное значение некоторой входной переменной, но это кажется мне запутанным, и я не уверен, почему это не сработает, но это будет ,

Я использую R версии 3.4.3 и глянцевый_1.0.5. Спасибо.

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