为什么当选择了多个复选框时,此const user = function(req, res){
// do stuff
req.log(['info'], 'some log info here');
};
module.exports = {
user,
};
代码不起作用。如果选中上述组中的一个复选框,则下面的框应更新以显示更具体的条目。但如果在顶部选择了多个复选框,则代码将失败。谁知道问题可能是什么?
从此处复制或bitbucket:https://bitbucket.org/snippets/afolabicrystal/deyay5
updateCheckboxGroupInput()
答案 0 :(得分:3)
问题是你一直在使用else if
;只要其中一个ifs被评估,其余的就会被跳过。基本上你是说:如果x是真的,那么你做。但是如果x不是真的(否则),检查z是否为真等等......所以如果x实际为真,则从不评估z。我希望这种解释是有道理的。
此外,您可以通过检查三个条件(电视,手机和平板电脑)来简化代码,如果选中该复选框,则将选项添加到矢量。
下面给出一个工作实例。希望这有帮助!
ui <- fluidPage(
p("The first checkbox group controls the second"),
checkboxGroupInput("inCheckboxGroup", "Device Class",
c("TV", "Mobile", "Tablet")),
checkboxGroupInput("inCheckboxGroup2", "Device Types",
c())
)
server <- function(input, output, session) {
observe({
x <- input$inCheckboxGroup
choices=c()
if ('TV' %in% x)
choices = c(choices,c("Amazon TV", "Apple TV"))
if("Mobile" %in% x)
choices =c(choices, c("Android Phone", "iPhone"))
if("Tablet" %in% x)
choices = c(choices,c("iPad", "Android Tablet"))
updateCheckboxGroupInput(session, "inCheckboxGroup2",
label = paste("Device Types", length(x)),
choices=choices,
selected = choices
)
})
}
shinyApp(ui, server)