簡體   English   中英

創建一個 R shiny 綁定到 DT 數據表上的雙擊事件

[英]Create an R shiny binding to a double click event on a DT datatable

我正在嘗試通過使用 R shiny 綁定雙擊 DT 數據表來創建操作。 我沒有明顯的 JS 技能,所以我承認這是問題所在;-)。 從 SO 上的示例中,我將以下代碼拼湊在一起(代碼片段並簡化以顯示問題):

library(shiny)
library(DT)

shiny::shinyServer(
  function(input, output, session) {
    
    data <- reactiveValues(data = NA)
    
    data$data <- "some code to make the data"
    
output$table <- DT::renderDataTable({
  DT::datatable(
    data = data$data, 
    class = 'compact',
    escape = FALSE,
    rownames = FALSE,
    selection = "single",
    options = (
      list(
        dom = "t",
        ordering = FALSE,
        paging = FALSE,
        autoWidth = FALSE,
        scrollY = "100vh",
        scrollCollapse = FALSE
      )
    ),
    callback = htmlwidgets::JS("     table.on('dblclick','tr', 
                                       function() {
                                         var row_=table.cell(this).index().row;
                                         var col=table.cell(this).index().column;
                                         Shiny.setInputValue('dt_dblclick', {"dt_row": row_, "dt_col": col});
                                       }
                                     );")
  ) 
}, server = FALSE)
   
 
    observeEvent(input$dt_dblclick, {
      print(input$dt_dblclick)
    })
  })
    
  }

我正在嘗試創建與 shiny input object ( input$dt_dblclick )和使用Shiny.setInputValue的雙擊事件的綁定。 但什么也沒有發生。 沒有值被打印到控制台。 請幫忙。 謝謝。

您必須使用td而不是tr 並刪除導致語法錯誤的雙引號。

JS(
  "table.on('dblclick', 'td',", 
  "  function() {",
  "    var row = table.cell(this).index().row;",
  "    var col = table.cell(this).index().column;",
  "    Shiny.setInputValue('dt_dblclick', {dt_row: row, dt_col: col});",
  "  }",
  ");"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM