闪亮 - 数据表 - 单击操作按钮两次

asd*_*212 1 datatable r shiny

我有这个闪亮的应用程序:

library(shiny)
library(DT)


ui <- fluidPage(
  fluidRow(
    DT::dataTableOutput(outputId = "my_data_table"),
  )
)


server <- function(input, output) {
  
  myValue <- reactiveValues(check = '')
  
  shinyInput <- function(FUN, len, id, ...) {
    inputs <- character(len)
    for (i in seq_len(len)) {
      inputs[i] <- as.character(FUN(paste0(id, i), ...))
    }
    inputs
  }
  
  
  my_data_table <- reactive({
    tibble::tibble(
      Name = c('Dilbert', 'Alice', 'Wally', 'Ashok', 'Dogbert'),
      Motivation = c(62, 73, 3, 99, 52),
      Actions = shinyInput(actionButton, 5,
                           'button_',
                           label = "Fire",
                           onclick = paste0('Shiny.onInputChange( \"select_button\" , this.id)') 
      )    
    )
  })
  
  output$my_data_table <- renderDataTable({
    my_data_table()
  }, escape = FALSE)
  
  
  observeEvent(input$select_button, {
    print(input$select_button)
  })
  
  
  
  
}

shinyApp(ui, server)

Run Code Online (Sandbox Code Playgroud)

每次我单击“fire”时 - 它都会打印按钮的行号。它运行良好,但如果我单击某个按钮两次 - 它只会打印第一次单击。我想在每次单击按钮时打印它,即使我在某行上单击 N 次。

任何建议都会受到欢迎..

Mar*_*cus 5

与 Shiny 通信:您需要将优先级从值切换到事件。否则,它假设由于消息的值没有更改(即按钮的 id),因此不会发送任何消息。第三个参数采用Shiny.onInputChange一个选项对象(例如{priority: "event"}),每次单击按钮时都会发送一条消息,即使连续两次单击相同的 id。

onclickjs代码应该是

onclick = paste0('Shiny.onInputChange( \"select_button\" , this.id, {priority: "event"})') 
Run Code Online (Sandbox Code Playgroud)