闪亮的数据表工具提示/弹出窗口不适用于分页

时间:2019-01-08 15:11:56

标签: javascript r shiny paging dt

我想在数据表的每一行上添加一个弹出框。 使用[这里](tooltip or popover in Shiny datatables for row names?)提供的解决方案(我不知道JavaScript,所以我盲目地复制粘贴了代码)我设法在表格的第一页上添加了弹出窗口。

问题在于表很大,因此我被迫将其分成更多页面。当我选择表格的另一页时,弹出窗口停止工作。

这是我正在使用的代码

output$view_data<-DT::renderDataTable({
    DT::datatable(Extraction(),rownames = FALSE,escape = FALSE,
        callback = JS(paste("
            var tips =",paste0("[",paste0("'",unlist(DrugFilter()),"'",collapse=","),"]"),",
            firstColumn = $('#view_data tr td:first-child');                                    
            for (var i = 0; i < tips.length; i++) 
                {$(firstColumn[i]).attr('title', tips[i]);}"
        ))
     ))
}, server = FALSE)

我如何修改代码以使弹出框可在所有表页面上而不是仅在第一个页面上使用?

1 个答案:

答案 0 :(得分:1)

我会尝试使用rowCallback

rowCallback <- c(
  "function(row, data, displayNum, displayIndex){",
  sprintf("  var tips = [%s];", 
          paste0("'",unlist(DrugFilter()),"'",collapse=",")),
  "  for(var i = 0; i < tips.length; i++){",
  "    if(displayIndex== i){",
  "      $('td:eq(0)',row).attr('title', tips[i]);",
  "    }",
  "  }",
  "}"
)

datatable(Extraction(), 
          rownames = FALSE, 
          escape = FALSE, 
          options = list(
            rowCallback = JS(rowCallback)
          )
)