【问题标题】:How to trigger an observeEvent in shiny when multiple selectizeInput is cleared清除多个selectizeInput时如何在闪亮中触发observeEvent
【发布时间】:2019-03-24 11:21:05
【问题描述】:

我希望observeEvent 在输入列表被清除时触发。

这是一个小示例应用程序:

library(shiny)

ui <- fluidPage(

  selectizeInput(inputId='select',
                 label='Select something',
                 multiple=TRUE,
                 choices=letters[1:3])
)

server <- function(input, output){

  observeEvent(input$select, {
    print(input$select)
  })
}

shinyApp(ui=ui, server=server)

现在,每次我选择另一个字母时,都会触发 observeEvent。删除一个字母也会触发该事件。但是,删除最后一个字母似乎不会触发任何事情。

我尝试了here 的解决方案,但它似乎不适用于我的情况(或者我无法让它工作)。

所以我的预期输出是,在选择a 后它会打印"a",但在删除a 之后,它也会打印一些东西(无论是NULL 还是"")。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    observeEvent 有多个参数

    observeEvent(eventExpr, handlerExpr, event.env = parent.frame(), event.quoted = FALSE, handler.env = parent.frame(), handler.quoted = FALSE,标签 = NULL,挂起 = FALSE,优先级 = 0, domain = getDefaultReactiveDomain(), autoDestroy = TRUE, ignoreNULL = TRUE, ignoreInit = FALSE, once = FALSE)

    包括ignoreNULL,默认设置为TRUE,只需将其更改为FALSE

      observeEvent(input$select, {
        print(input$select)
      },ignoreNULL  = F)
    

    【讨论】:

    • 您可能还想添加ignoreInit = T,以便在页面首次加载时(即未选择任何内容时)不会打印NULL
    【解决方案2】:

    你可以使用observe代替observeEvent。

    library(shiny)
    
    ui <- fluidPage(
    
      selectizeInput(inputId='select',
                     label='Select something',
                     multiple=TRUE,
                     choices=letters[1:3])
    )
    
    server <- function(input, output){
    
      observe({
        print(input$select)
      })
    }
    
    shinyApp(ui=ui, server=server)
    

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 2020-09-24
      • 2018-08-17
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2017-12-06
      • 2019-01-24
      • 2018-12-22
      相关资源
      最近更新 更多