[英]How do I attach a click listener to a datatable in DT and Shiny?
我有一個閃亮的應用程序,我嘗試將連接click
收聽到一個datatable
的行。
這是我的代碼:
require(DT)
require(data.table)
ui <- fluidPage(
fluidRow(
titlePanel("Data Explorer")
),
fluidRow(
column(
DT::dataTableOutput("listTable"),
width = 4
),
column(
width = 8
)
)
)
get.data <- function() {
res <- data.table(a = c(1,2,3), b = c(4,5,6))
return(res)
}
server <- function(input, output) {
output$listTable <- DT::renderDataTable({
showModal(modalDialog("Fetching Data..."))
dt <- datatable(get.data(),
rownames = FALSE,
options = list(autoWidth = TRUE,
selection = 'none',
callback = JS("$('#listTable tbody').on('click.dt', 'tr', function() { console.log('foo'); })")))
removeModal()
return(dt)
})
}
shinyApp(ui = ui, server = server)
我通過谷歌搜索找到的所有示例都使用隱式提供的table
變量來查找根元素,但是當我嘗試這樣做時,我只得到一個ReferenceError: table is not defined
。
所以我改用了直接的 JQuery 搜索。 當我使用console.log('foo')
作為回調時,它工作正常。 但是當我像上面那樣嘗試附加一個偵聽器時,它沒有附加。 當我將完全相同的代碼復制粘貼到頁面上的 Firefox 控制台時,它就可以工作了。
這里有什么問題?
callback
是的參數datatable
功能,它不屬於options
列表。 所以你必須這樣做:
dt <- datatable(
get.data(),
rownames = FALSE,
callback = JS("table.on('click', 'tr', function() { alert('foo'); })"),
options = list(
autoWidth = TRUE,
selection = 'none'
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.