R: Shiny.OnInputChange живой клик - PullRequest
       7

R: Shiny.OnInputChange живой клик

0 голосов
/ 13 декабря 2018

Скажем, у меня есть объект в DOM браузера с class = «row» и id = «row22».

Я хочу использовать Shiny.onInputChange (), чтобы обнаружить щелчок по этому объекту и отправитьидентификатор блестящей переменной $ input.Я измотал Google, искал пример того, как это сделать, но ничего не придумал.Может ли кто-нибудь, кто знает, как это сделать, предоставить пример кода?в jquery должно работать что-то вроде $(document).on

Например:

В Javascript добавлена ​​функция, которая выглядит следующим образом:

function my_row(n) {
  Shiny.onInputChange("js.row", n);
};

В Shiny-код добавленнаблюдатель, который ищет изменения на input$js.row:

 observeEvent(input$js.row, {
    print(paste0("Value of js.row is ", input$js.row))
 })

все еще Shiny.OnInputChange не вызывает observeEvent(input$js.row!Есть ли у нас альтернативный подход?

1 Ответ

0 голосов
/ 14 декабря 2018

Ваши фрагменты кода выглядят хорошей отправной точкой.

Не зная в полном объеме, могу ли я подумать, что вам нужно добавить некоторый код при запуске действия с помощью:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...