我正在尝试从 Shiny 模块中访问最后单击的复选框或按钮 ID。
我发现这篇文章的精彩回复很有帮助:R shiny - last clicked button id并已根据我的问题调整了代码。我还从这篇文章中得到了提示:https ://github.com/datastorm-open/visNetwork/issues/241但仍然无法正常工作。
user_inputUI <- function(id){
# Create a namespace function using the provided id
ns <- NS(id)
tagList(
tags$head(tags$script(HTML("$(document).on('click', '.needed', function () {
Shiny.onInputChange('", ns("last_btn"), "', this.id);
});"))),
tags$span(HTML('<div><input id="first" type="checkbox" class="needed"></div>')),
actionButton(ns("second"), "Second",class="needed"),
actionButton(ns("third"), "Third",class="needed"),
actionButton(ns("save"), "save"),
selectInput(ns("which_"),"which_",c("first","second","third"))
)
}
update_options <- function(input, output, session) {
observeEvent(input$save,{
updateSelectInput(session,"which_",selected = input$last_btn)
})
return(reactive(input$last_btn))
}
ui <- shinyUI(fluidPage(
titlePanel("Track last clicked Action button"),
sidebarLayout(
sidebarPanel(
user_inputUI("link_id")
),
mainPanel(
textOutput("lastButtonCliked")
)
)
))
server <- shinyServer(function(input, output,session) {
last_id <- callModule(update_options, "link_id")
output$lastButtonCliked=renderText({last_id()})
})
# Run the application
shinyApp(ui = ui, server = server)
我希望在应用程序底部创建并返回 input$last_btn 值(最后一次单击的按钮的 id 名称),并成为 selectize 中的更新输入。但是,没有创建 input$last_btn,我也使用调试浏览器()检查了这一点。