【问题标题】:shiny selectInput does not react to deselect all elements闪亮的 selectInput 不会对取消选择所有元素做出反应
【发布时间】:2017-03-15 15:57:37
【问题描述】:

如何观察在shiny中取消选择selectInput的所有元素?

例如

library(shiny)

ui=shinyUI(fluidPage(
  selectInput("select","",choices = c(1,2),multiple = T)
  ))

server=function(input, output,session) {
  observeEvent(input$select,{
    print(input$select)
  })

}

shinyApp(ui,server)

行动:

1) 选择 1

2) 选择 2

3) 取消选择 2

4) 取消选择 1

控制台日志:

[1] "1"
[1] "1" "2"
[1] "1"

所以全部取消选择时没有打印。

这是错误还是我做错了什么?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    observeEvent 对 NULL 没有反应。这在大多数情况下很有用,请参阅 question ,@daattali 的答案。

    你有两个选择,1)使用观察

    library(shiny)
    
    ui=shinyUI(fluidPage(
      selectInput("select","",choices = c(1,2),multiple = T)
      ))
    
    server=function(input, output,session) {
      observe({
        print(input$select)
      })
    
    }
    
    shinyApp(ui,server)
    

    2) 按照@WeihuangWong 的建议,在observeEvent() 中将ignoreNULL 参数设置为FALSE

    library(shiny)
    
    ui=shinyUI(fluidPage(
      selectInput("select","",choices = c(1,2),multiple = T)
    ))
    
    server=function(input, output,session) {
      observeEvent(input$select,{
        print(input$select)
      }, ignoreNULL = FALSE) 
    }
    
    shinyApp(ui,server)
    

    【讨论】:

    • 要添加到答案,您还可以将ignoreNULL 参数设置为FALSE 以获得相同的行为,即observeEvent(input$select,{print(input$select)}, ignoreNULL = FALSE)
    • @WeihuangWong 这比简单地观察(我的想法)要好,因为在我的真实案例中观察调用多次,谢谢
    • 好点@WeihuangWong。将编辑答案以包含您的观点。
    猜你喜欢
    • 1970-01-01
    • 2019-12-11
    • 2018-10-17
    • 2014-12-15
    • 2020-09-05
    • 2014-02-23
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多