为 DT 数据表上的双击事件创建 R 闪亮绑定
Posted
技术标签:
【中文标题】为 DT 数据表上的双击事件创建 R 闪亮绑定【英文标题】:Create an R shiny binding to a double click event on a DT datatable 【发布时间】:2021-05-13 17:05:06 【问题描述】:我正在尝试通过使用 R 闪亮绑定双击 DT 数据表来创建一个动作。我没有明显的 JS 技能,所以我承认这是问题所在;-)。 从 SO 的示例中,我将以下代码拼凑在一起(代码 sn-p 并简化以显示问题):
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)
)
)
我正在尝试创建绑定到闪亮的input
对象 (input$dt_dblclick
) 和使用Shiny.setInputValue
的双击事件。但什么也没有发生。没有值被打印到控制台。
请帮忙。谢谢。
【问题讨论】:
【参考方案1】:您必须使用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);",
" ",
");"
)
【讨论】:
以上是关于为 DT 数据表上的双击事件创建 R 闪亮绑定的主要内容,如果未能解决你的问题,请参考以下文章