r语言 - 确定是否在闪亮的应用程序中单击了DT数据表



这是我获取表格点击事件的最佳尝试的工作示例:

library(shiny)
library(DT)
runApp(shinyApp(
  ui = fluidPage(DT::dataTableOutput('table')),
  server = function(input, output, session) {
    output$table <- DT::renderDataTable({
      dt <- data.frame(a = 1)
      datatable(dt, rownames = FALSE, selection = 'none')
    })
    observeEvent(input$table_cell_clicked, {
      print(Sys.time())
    })}
))

问题是,只有当用户单击与以前单击的单元格不同的单元格时,observeEvent才会做出反应。有没有办法在任何表格点击上获取事件?

我认为这可能会有所帮助

尝试使用Shiny.onInputChange添加callback 并添加所有时间都变化的SMTH(rnd

像 SMT 一样

   JS("table.on('click.dt', 'td', function() {
            var row_=table.cell(this).index().row;
            var col=table.cell(this).index().column;
            var rnd= Math.random();
            var data = [row_, col, rnd];
           Shiny.onInputChange('rows',data );
    });")

然后像这样使用它:

library(shiny)
library(DT)
runApp(shinyApp(
  ui = fluidPage(DT::dataTableOutput('table')),
  server = function(input, output, session) {
    output$table <- DT::renderDataTable({
      datatable(data.frame(a = c(1,2),b=c(2,3)), rownames = FALSE, selection = 'none', callback = JS("table.on('click.dt', 'td', function() {
            var row_=table.cell(this).index().row;
            var col=table.cell(this).index().column;
            var rnd= Math.random();
            var data = [row_, col, rnd];
           Shiny.onInputChange('rows',data );
    });")
      )}
    )
    observeEvent(input$rows, {
      print(input$rows)
      print(Sys.time())
    })}
))

然后解析所有row并从input$rows col

在数据表中索引从 0 开始。

最新更新