在闪亮的小部件中取消选中最后一个复选框时是否会触发观察者?在这里,当用户选择其他一些复选框选项时,我会通过观察者检查一些复选框。但是,我发现当最后一个复选框未选中时,观察者不会触发。它适用于其他一切。
这是一个例子,其中输入'根据'子集'检查复选框。选项。我添加了一些打印输出用于调试,如果检查了子集框,然后所有这些都未经检查,则没有打印输出,这表明观察者没有工作。
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]))
})
})
)
我只想拥有所有的输入&#39;所有&#39;子集&#39;都会取消选中复选框。检查未经检查。这该怎么做?谢谢!
答案 0 :(得分:14)
您想使用观察者的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)
})
)