Car*_*arl 4 javascript datatable r shiny
我是一位javascript新手,因此无法在DataTables回调选项中正常使用函数。
在这个小示例中,我想编写一个javascript函数,以便当用户在数据表中选择一行时mtcars,如果MPG的值大于20,则它们将作为警报显示“对您有好处!”。与此类似,但是该示例未使用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)
Run Code Online (Sandbox Code Playgroud)
选择MPG大于20的行不会产生我想要的警报。我觉得我可能在根本上误解了JavaScript在回调选项中的工作方式。任何帮助,将不胜感激。
问候
你只需要在身体callback机能中callback的参数renderDataTable(你不需要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!");
})'
))
}
Run Code Online (Sandbox Code Playgroud)
您parseFloat还处于整个if状态,并且data[0]是汽车的名称,data[1]将是mpg。
您可以使用开发人员工具并console.log在javascript中进行故障排除,以打印到控制台。例如,您可以console.log(data)在之前添加if并检查外观。