首页 > 解决方案 > ObserveEvent 和 textInput,令人困惑的行为

问题描述

具有以下简单的应用程序:

library("shiny")

ui <- fluidPage(
    uiOutput('model'),
    textInput('search', 'Look for a model')
)


server <- function(input, output, session) {

    options <- c('a', 'b', 'c', 'd')

    output$model <- renderUI({
        checkboxGroupInput("model",
                           "Select a model:",
                           options,
                           selected='a')
    })

    observeEvent(input$search,{
        updateCheckboxGroupInput(session,"model",
                                 "Select a model:",
                                 options[grep(input$search, options)])
    })

}

shinyApp(ui = ui, server = server)

我想向a已经预选的用户显示选择。稍后,我想CheckboxGroupInput 仅在用户开始输入搜索框后更新。但是,复选框似乎会立即更新,并且a不会显示预选的选项。

为什么不observeEvent等待与 的交互inputText?有什么想法可以解决这个问题并等到用户开始输入(我不想使用按钮)?

标签: rshiny

解决方案


防止在 Shiny 中对应用程序加载执行观察提供了答案。将observeEvent不会在开始时执行。

编辑:(按照@lbusett 的建议做出明确的回答)

ignoreInit = TRUE在调用中设置可以observeEvent解决问题。


推荐阅读