R数据表中的嵌入式输入-javascript问题
我有一个R/Shining应用程序,其中包含DT包中的数据表 按照这个思路,我已经能够将操作按钮嵌入到我的datatable中的一列中,这将触发一组相应的观察者 但是,当对数据表进行分页时,“我的操作”按钮将仅对第一页上的那些按钮正常工作。后续页面上的按钮不起作用。即使我使用列排序对数据重新排序,情况仍然如此,因为在初始呈现时第2页上的任何按钮即使在第1页上重新排序也无法工作 我认为问题在于回调参数是如何使用javascript(不幸的是,这超出了我的理解范围)正确呈现动作按钮的。有人能建议如何在后续页面上使用操作按钮吗 这是我的最小reprex,使用mtcars数据:R数据表中的嵌入式输入-javascript问题,javascript,r,shiny,datatables,dt,Javascript,R,Shiny,Datatables,Dt,我有一个R/Shining应用程序,其中包含DT包中的数据表 按照这个思路,我已经能够将操作按钮嵌入到我的datatable中的一列中,这将触发一组相应的观察者 但是,当对数据表进行分页时,“我的操作”按钮将仅对第一页上的那些按钮正常工作。后续页面上的按钮不起作用。即使我使用列排序对数据重新排序,情况仍然如此,因为在初始呈现时第2页上的任何按钮即使在第1页上重新排序也无法工作 我认为问题在于回调参数是如何使用javascript(不幸的是,这超出了我的理解范围)正确呈现动作按钮的。有人能建议如何
library(shiny)
library(DT)
ui <- fluidPage(
titlePanel("reprex1")
,fluidRow(
dataTableOutput("dt1")
)
)
server <- function(input, output) {
output$dt1 <- renderDataTable({
mtlocal <- mtcars
for(n in 1:nrow(mtlocal)){
mtlocal$actionbutton[[n]] <- as.character(
actionButton(
paste0("buttonpress",n), label = paste0("buttonpress",n)
)
)
}
datatable(
mtlocal
,escape = FALSE
,selection = "none"
,callback = JS("table.rows().every(function(i, tab, row) {
var $this = $(this.node());
$this.attr('id', this.data()[0]);
$this.addClass('shiny-input-container');
});
Shiny.unbindAll(table.table().node());
Shiny.bindAll(table.table().node());")
)
}, server = FALSE)
lapply(
1:nrow(mtcars),function(x){
observeEvent(
input[[paste0("buttonpress",x)]],{
showModal(
modalDialog(
h2(paste0("You clicked on button ",x,"!"))
)
)
}
)
}
)
}
# Run the application
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(DT)
ui只执行一次回调
,然后重新绘制表时,闪亮。绑定/取消绑定
丢失。您必须使用选项preDrawCallback
和drawCallback
:
datatable(
mtlocal
,escape=FALSE
,selection=“无”
,选项=列表(
preDrawCallback=JS('function(){shinny.unbindAll(this.api().table().node();}'),
drawCallback=JS('function(){shinny.bindAll(this.api().table().node());}'))
)
)