有一个选项可以在datatables.net网站上添加自定义按钮。如何在R Shiny应用中进行编码?一个按钮和观察者的基本R代码示例将非常有趣。
这是https://datatables.net/extensions/buttons/examples/initialisation/custom.html上的JS代码
$(document).ready(function() {
$('#example').DataTable( {
dom: 'Bfrtip',
buttons: [
{
text: 'My button',
action: function ( e, dt, node, config ) {
alert( 'Button activated' );
}
}
]
} );
} );
谢谢!
答案 0 :(得分:4)
除了操作之外,您不需要使用Javascript。您可以这样做:
library(DT)
datatable(iris,
extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = list(
"copy",
list(
extend = "collection",
text = 'test',
action = DT::JS("function ( e, dt, node, config ) {
alert( 'Button activated' );
}")
)
)
)
)
要将某些内容从Javascript传递到闪亮的服务器,请使用Shiny.setInputValue
:
library(shiny)
library(DT)
ui <- basicPage(
DTOutput("dtable")
)
server <- function(input, output, session){
output$dtable <- renderDT(
datatable(iris,
extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = list(
"copy",
list(
extend = "collection",
text = 'test',
action = DT::JS("function ( e, dt, node, config ) {
Shiny.setInputValue('test', true, {priority: 'event'});
}")
)
)
)
)
)
observeEvent(input$test, {
print("hello")
})
}
shinyApp(ui, server)
答案 1 :(得分:2)
我很欣赏斯蒂芬·洛朗的回答,并找到了丢失的东西。
周围必须有一对括号{}class Month: Object {
@objc dynamic public private(set) var id = UUID().uuidString
@objc dynamic public private(set) var month = Date()
@objc dynamic public private(set) var beg:Int = 0
override class func primaryKey() -> String {
return "id"
}
}
喜欢
priority: 'event'
如 https://shiny.rstudio.com/articles/communicating-with-js.html