Я создаю приложение 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. Спасибо.