テーブルセルをクリックした後に何か起こったことの機能を追加したいと考えました(例:モーダルを開く)。私の新しいセルをクリックするまでは、input$dt_cell_clicked
は同じセルになっているので、そのセルを再度クリックすると同じイベントを実行することができないため、(私のdtにID "dt"があるとします)DataTables DT:クリックしたセルの値をリセットする
私は、手動でinput$dt_cell_clicked
をjavascriptでリセットして回避しようとしました。これは動作しますが、以前にセルをクリックしたことに気づいたDTに内部アップデータがあるようですが、クリックされた値にinput$dt_cell_clicked
の値を設定しません。回避策はありますか?これはバグですか?
ありがとうございます!
最小例:ここでは
library(shiny)
library(shinyjs)
ui <- fluidPage(
h2("Last clicked:"),
verbatimTextOutput("last_clicked"),
actionButton("reset", "Reset clicked value"),
h2("Datatable:"),
DT::dataTableOutput("dt"),
useShinyjs(),
extendShinyjs(text = paste0("shinyjs.resetDTClick = function() { Shiny.onInputChange('dt_cell_clicked', null); }"))
)
server <- function(input, output) {
# the last clicke value
output$last_clicked <- renderPrint({
str(input$dt_cell_clicked)
})
output$dt <- DT::renderDataTable({
DT::datatable(head(mtcars, 2))
})
observeEvent(input$dt_cell_clicked, {
validate(need(length(input$dt_cell_clicked) > 0, ''))
alert("You clicked something!")
})
observeEvent(input$reset, {
js$resetDTClick()
})
}
shinyApp(ui, server)
'DT :: selectRows'を使用して行の選択を解除してみてください。 –
これは行の選択ではなく、最後にクリックされた値をリセットすることです:) – shosaco