Ваши фрагменты кода выглядят хорошей отправной точкой.
Не зная в полном объеме, могу ли я подумать, что вам нужно добавить некоторый код при запуске действия с помощью:
function my_row(n) {
Shiny.onInputChange("js.row", n);
};
Как вы хотите вызвать функцию, когда элемент с id = row22Вы можете использовать:
document.getElementById('row22').onclick
Но вам придется подождать, пока не загрузится блестящий.Это можно сделать с помощью:
$(document).on('shiny:sessioninitialized', function(event) {
Полный пример будет выглядеть так:
library(shiny)
ui <- fluidPage(
tags$script("
$(document).on('shiny:sessioninitialized', function(event) { // wait for shiny to be loaded
document.getElementById('row22').onclick = function(elem) {
Shiny.onInputChange('jsrow', elem.srcElement.textContent);
};
});
"),
div(class = "row", id = "row21", "counter example"),
div(class = "row", id = "row22", "target: click me!")
)
server <- function(input, output, session) {
observeEvent(input$jsrow, {
print(paste0("Value of js.row is ", input$jsrow))
})
}
shinyApp(ui, server)