我有这个闪亮的应用程序:
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 次。
任何建议都会受到欢迎..
与 Shiny 通信:您需要将优先级从值切换到事件。否则,它假设由于消息的值没有更改(即按钮的 id),因此不会发送任何消息。第三个参数采用Shiny.onInputChange一个选项对象(例如{priority: "event"}),每次单击按钮时都会发送一条消息,即使连续两次单击相同的 id。
onclickjs代码应该是
onclick = paste0('Shiny.onInputChange( \"select_button\" , this.id, {priority: "event"})')
Run Code Online (Sandbox Code Playgroud)