Shiny: 当 multiple = FALSE 时 selectizeInput 占位符消失

创建于 2016-05-04  ·  5评论  ·  资料来源: rstudio/shiny

当带有占位符、choices = NULL、selected = NULL 和 multiple = FALSE 的 selectizeInput 更新为具有长度 > 0 的一组选择时,占位符消失并且选择的第一个元素成为选定值。 我希望占位符保留并且 selected = NULL,因为只有选择被更新,而不是 selected 参数。

但是,如果 multiple = TRUE,则在添加选项时,占位符保持不变,并且 selected 保持为 NULL。

下面是一个最小的示例:当 UI 加载时,selectizeInput 有一个占位符,choices = NULL 和 multiple = FALSE。 当您选中该框时,服务器会将选项更新为 c("var1", "var2", "var3",但不会更新选择,但占位符会消失并且默认选择“var1”。即使发生这种情况我在 updateSelectizeInput 调用中指定 selected = NULL。

这是一个错误还是有意的? 有没有办法保留一个占位符并且没有选择多个= FALSE?

library(shiny)

ui <- shinyUI(fluidPage(

  # Application title
  titlePanel("selectizeInput demo"),

  # Sidebar with a slider input for number of bins
  sidebarLayout(
    sidebarPanel(
      selectizeInput(
        inputId = "variable",
        label = h3("Treatment variable"),
        choices = NULL,
        multiple = FALSE,
        selected = NULL,
        options = list(placeholder = "This is a placeholder")
      ),

      checkboxInput(
        inputId = "add_choices",
        label   = "Add choices",
        value   = FALSE)
    ),
    mainPanel = NULL
  )
))

server <- shinyServer(function(input, output, session) {

  observe({
    if (input$add_choices) {

      updateSelectizeInput(
        session = session,
        inputId = "variable",
        choices = paste0("var", 1:3),
        selected = NULL)
    }
  })

})

shinyApp(ui = ui, server = server)

最有用的评论

看起来这可以通过设置 multiple = TRUE 但包括 selectize.js 选项 maxItems = 1 以某种落后的方式解决。占位符仍然存在,但项目数仍然限制为 1,就好像有效地 multiple = FALSE .

selectizeInput(
        inputId = "variable",
        label = h3("Treatment variable"),
        choices = NULL,
        multiple = TRUE,
        selected = NULL,
        options = list(
            placeholder = "This is a placeholder",
            maxItems = 1)
      )

所有5条评论

看起来这可以通过设置 multiple = TRUE 但包括 selectize.js 选项 maxItems = 1 以某种落后的方式解决。占位符仍然存在,但项目数仍然限制为 1,就好像有效地 multiple = FALSE .

selectizeInput(
        inputId = "variable",
        label = h3("Treatment variable"),
        choices = NULL,
        multiple = TRUE,
        selected = NULL,
        options = list(
            placeholder = "This is a placeholder",
            maxItems = 1)
      )

@mdec您的解决方案似乎是一种解决方法,我的猜测是开发人员可能想要修复底层错误。

是的,我会重新打开,因为这听起来值得修复。

事实证明,您可以使用selected=character(0)而不是selected=NULL来获取占位符。

selected = character(0), multiple = FALSE,
options = list(create = TRUE, placeholder = 'choose an option')

对我不起作用。 我不得不使用解决方法。 但是解决方法不允许我在使用更新 UI 时仅使用一个选项来实现键入

更新选择输入

一个“干净”的解决方案将是更可取的国际海事组织

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

hudon picture hudon  ·  4评论

daattali picture daattali  ·  4评论

hlherrera picture hlherrera  ·  5评论

zji90 picture zji90  ·  5评论

Stophface picture Stophface  ·  3评论