首页 > 解决方案 > 使用重置(shinyJS 功能)并一起单击然后观察单击的按钮的问题

问题描述

问题陈述:点击一个按钮(比如重置),我们需要重置一些控件,然后以编程方式点击另一个按钮(在这种情况下是更新)并执行一些逻辑并适当地渲染。

在下面的示例中,我在单击重置按钮时执行以下操作,我正在使用重置功能重置选择器输入,然后调用单击“更新”按钮。

预期的

单击重置时,两个文本都应为 NULL

发生的事情是:

第一个是NUll,第二个是最后一个值

我想了解其背后的原因。有趣的是,当我们调试时,它按预期工作。是否有解决方法来实现这样的目标?

library(shiny)
library(shinyWidgets)
library(shinyjs)

options(shiny.reactlog=TRUE)
# if (interactive()) {
#     library(shiny)
    
    shinyApp(
        ui = fluidPage(
            useShinyjs(),
            div(
                id = "form",
                pickerInput(
                    inputId = "letter",
                    label = "Select max two option below:",
                    choices = c("A", "B", "C", "D"),
                    multiple = TRUE,
                    selected = NULL,
                    options  = list(`actions-box` = TRUE)
                ),
                verbatimTextOutput("selected_value"),
                verbatimTextOutput("reset_value"),
            ),
            actionButton("reset", "Reset"),
            actionButton("update", "Update"),
        ),
        server = function(input, output) {
            
            msg <- "temp reactive"
            msg_reactive <- reactiveValues(text = msg)
            
            output$reset_value <- renderPrint(msg_reactive$text)
            
            output$selected_value <- renderPrint(input$letter)
            
            observeEvent(input$reset, {
                reset("letter")
                click("update")
            })
            
            observeEvent(input$update,{
                ## some logic , currently just setting it to current value of drop down letters
                ## I assume click on line number 52 triggers the control to come here 
                ## but still values in input$letter are older onces and not NULL
                ## if I use a browser and then executes it works , Not sure where I am falling short
                msg_reactive[['text']] <- input$letter
             })   
        }
     )
# }

标签: shinyjs

解决方案


推荐阅读