Обнаружение изменения значения selectInput на NULL в R Shiny - PullRequest
0 голосов
/ 21 апреля 2020

В приведенном ниже коде я не могу обнаружить изменение значения selectInput на NULL

library(shiny)
ui <- fluidPage(
  selectInput(
    inputId = "var",
    label = "Select a variable:",
    choices = c("A", "B", "C"),
    selected = NULL,
    multiple = T),
  textOutput("selected_var")
)
server <- function(input, output) {
  observeEvent(input$var, {
    showNotification("var changed")
    output$selected_var <- renderPrint(paste0("selected var: ", input$var))
    if(is.null(input$var)) {                          # I want to be able to
      showNotification("var changed to null")         # detect this action
    }
  })
}
shinyApp(ui = ui, server = server)

Если пользователь выберет A, затем нажмите клавишу Backspace, чтобы удалить его, я хочу быть в состоянии обнаружить это действие.

Как бы вы обнаружили, что значение input$var меняется на NULL?

1 Ответ

1 голос
/ 21 апреля 2020

По умолчанию observeEvent установлено, чтобы игнорировать NULL. Добавление ignoreNULL = FALSE к observeEvent исправит это. Вы также можете с помощью sh добавить ignoreInit = TRUE, чтобы остановить запуск observeEvent при запуске.

Вот полный код:

library(shiny)

ui <- fluidPage(

    selectInput(inputId = "var", label = "Select a variable:", choices = c("A", "B", "C"), selected = NULL, multiple = T),

    textOutput("selected_var")

)

server <- function(input, output) {

    observeEvent(input$var, {

        if(is.null(input$var)) {    

            showNotification("var changed to null")    

        }

    }, ignoreInit = TRUE, ignoreNULL = FALSE)

}
shinyApp(ui = ui, server = server)
...