闪亮的观察者会响应未选中的所有复选框

pic*_*ick 7 r shiny

在闪亮的小部件中取消选中最后一个复选框时是否会触发观察者?在这里,当用户选择其他一些复选框选项时,我会通过观察者检查一些复选框.但是,我发现当最后一个复选框未选中时,观察者不会触发.它适用于其他一切.

下面是一个示例,其中根据"子集"选项检查"输入"复选框.我添加了一些打印输出用于调试,如果检查子集框,然后所有这些都未选中,则没有打印输出,这表明观察者没有工作.

library(shiny)
shinyApp(
    shinyUI(
        fluidPage(
            uiOutput('ui')
        )
    ),
    shinyServer(function(session, input, output) {
        ## Some sample data
        dat <- data.frame(foo=1:10, bar=factor(c('a','b')))

        ## The UI
        output$ui <- renderUI({
            inputPanel(
                checkboxGroupInput('input', 'Input:', choices=dat$foo),
                checkboxGroupInput('subset', 'Subset:', choices=levels(dat$bar))
            )
        })

        ## Observer for checking 'input' boxes
        observeEvent(input$subset, {
            ## Print output for debugging
            print(dat$foo[dat$bar %in% input$subset])
            updateCheckboxGroupInput(session, inputId='input',
                                     selected=paste(dat$foo[dat$bar %in% input$subset]))
        })
    })

)
Run Code Online (Sandbox Code Playgroud)

我只想在未选中所有"子集"检查项时取消选中所有"输入"复选框.这该怎么做?谢谢!

Dea*_*ali 15

您想使用ignoreNull观察者的参数.这是一个简化的例子

library(shiny)
shinyApp(
  shinyUI(
    fluidPage(
      uiOutput('ui')
    )
  ),
  shinyServer(function(session, input, output) {

    output$ui <- renderUI({
      inputPanel(
        checkboxGroupInput('subset', 'Subset:', choices = c("a", "b"))
      )
    })

    observeEvent(input$subset, {
      print("hello: ")
      print(input$subset)
    }, ignoreNULL = FALSE)
  })

)
Run Code Online (Sandbox Code Playgroud)