【发布时间】:2021-07-09 10:15:36
【问题描述】:
selectizeInput 的文档描述了 selected 的参数如下。
selected 最初选择的值(或多个值,如果有多个 =真)。如果未指定,则默认为单选列表的第一个值,而多选列表则没有值。
如果没有为selected 指定任何内容,我将这句话解释为selected 参数将是choices 参数的第一个元素。但是,在以下示例中,在为第一个 selectizeInput 选择任何数字后,第二个 selectizeInput 不会选择第一个选项。它仍将默认消息显示为占位符。
请注意,如果我设置server = TRUE,第二个selectizeInput 将能够将第一个选项显示为selected。
我想知道为什么server = TRUE 或server = FALSE 会影响selected 是否可以成为choices 中的第一个元素。我也想知道如何使server = FALSE 的行为与server = TRUE 的行为相同。
library(shiny)
ui <- fluidPage(
headerPanel("shinyStore Example"),
sidebarLayout(
sidebarPanel = sidebarPanel(
selectizeInput(inputId = "Select1", label = "Select A Number",
choices = as.character(1:3),
options = list(
placeholder = 'Please select a number',
onInitialize = I('function() { this.setValue(""); }'),
create = TRUE
))
),
mainPanel = mainPanel(
fluidRow(
selectizeInput(inputId = "Select2",
label = "Select A Letter",
choices = character(0),
options = list(
placeholder = 'Please select a number in the sidebar first',
onInitialize = I('function() { this.setValue(""); }'),
create = TRUE
))
)
)
)
)
server <- function(input, output, session) {
dat <- data.frame(
Number = as.character(rep(1:3, each = 3)),
Letter = letters[1:9]
)
observeEvent(input$Select1, {
updateSelectizeInput(session, inputId = "Select2",
choices = dat$Letter[dat$Number %in% input$Select1],
server = FALSE)
})
}
shinyApp(ui, server)
【问题讨论】: