[英]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.