gpt4 book ai didi

r - 与唯一的 observeEvent 相关联的 actionButton 的动态数量

转载 作者:行者123 更新时间:2023-12-03 14:19:17 26 4
gpt4 key购买 nike

我想生成动态数量的 actionButton,然后让每个生成的按钮将其编号打印到控制台。到目前为止,这是我最好的尝试,但我仍然无法为前 10 个按钮中的每个按钮获取 observeEvent 以识别按钮点击。如何将按钮绑定(bind)到观察事件?

library(shiny)

ui <- basicPage(
fluidRow(
actionButton(inputId = "add_button",
label = "Add Button")
),
uiOutput("more_buttons")
)

server <- function(input, output){

rvs <- reactiveValues(buttons = list(actionButton(inputId = "button1",
label = 1)))

observeEvent(eventExpr = input$add_button,
handlerExpr = {
len <- length(rvs$buttons) + 1
rvs$buttons[[len]] <- actionButton(inputId = paste0("button",len),
label = len)
})

output$more_buttons <- renderUI({
do.call(fluidRow, rvs$buttons)
})

# This is the part that doesn't work
for(ii in 1:10){
observeEvent(eventExpr = input[[paste0("button",ii)]],
handlerExpr = print(ii))
}

}

shinyApp(ui, server)

最佳答案

你真的很接近,只需包装observeEvent部分在本地。

library(shiny)

ui <- basicPage(
fluidRow(
actionButton(inputId = "add_button",
label = "Add Button")
),
uiOutput("more_buttons")
)

server <- function(input, output){

rvs <- reactiveValues(buttons = list(actionButton(inputId = "button1",
label = 1)))

observeEvent(eventExpr = input$add_button,
handlerExpr = {
len <- length(rvs$buttons) + 1
rvs$buttons[[len]] <- actionButton(inputId = paste0("button",len),
label = len)
})

output$more_buttons <- renderUI({
do.call(fluidRow, rvs$buttons)
})

observeEvent(rvs$buttons,{
for(ii in 1:length(rvs$buttons)){
local({
i <- ii
observeEvent(eventExpr = input[[paste0("button",i)]],
handlerExpr = {print(sprintf("You clicked btn number %d",i))})
})
}
})

}

shinyApp(ui, server)

关于r - 与唯一的 observeEvent 相关联的 actionButton 的动态数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34157684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com