【问题标题】:Shiny DataTable Callback闪亮的数据表回调
【发布时间】:2016-02-25 17:32:33
【问题描述】:

我是一个 javascript 新手,所以我无法让 DataTables 回调选项中的函数正常工作。

在这个小例子中,我想编写一个 javascript 函数,以便当用户在 mtcars 数据表中选择一行时,如果 MPG 的值大于 20,则他们会发出“Good为你!”。它类似于this,但该示例不使用shiny。这是我尝试过的:

library(shiny)
library(DT)
server <- function(input, output) {
    output$one <- DT::renderDataTable(mtcars,options=list(callback=DT::JS(
      'function(table) {
      table.on("click.dt","tr", function() {
      var data=table.row(this).data();
      if (parseFloat(data[0]>20.0))      
        alert("Good for you!");
      });}'    
      )))
}

ui <- fluidPage(mainPanel(DT::dataTableOutput("one")))
shinyApp(ui = ui, server = server) 

选择 MPG 大于 20 的行不会产生我想要的警报。我觉得我可能从根本上误解了 javascript 在回调选项中的工作方式。任何帮助将不胜感激。

问候

【问题讨论】:

    标签: javascript r datatable shiny


    【解决方案1】:

    您只需要renderDataTablecallback 参数中的callback 函数体(这里不需要options

        server <- function(input, output) {
            output$one <- DT::renderDataTable(mtcars,callback=JS(
                    'table.on("click.dt","tr", function() {
                    var data=table.row(this).data();
                    if (parseFloat(data[1])>20.0)      
                     alert("Good for you!");
    })'    
          ))
    }
    

    您的parseFloat 也是整个if 条件,data[0] 是汽车的名称,data[1] 将是mpg。

    您可以使用开发人员工具和 javascript 中的 console.log 打印到控制台来解决此问题。例如,您可以在 if 之前添加 console.log(data) 并检查它的外观。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-18
      • 2023-03-20
      • 2021-02-13
      • 1970-01-01
      • 2018-08-03
      • 2019-07-04
      • 2018-02-01
      • 2017-06-04
      相关资源
      最近更新 更多