闪亮的 selectizeInput 具有“一次性删除全部”功能

use*_*503 4 r shiny selectize.js

例子:

以下闪亮的示例app.R文件包含一个selectizeInputUI。可以使用 删除选定的元素options = list(plugins= list('remove_button'))

在此输入图像描述

library(shiny)
library(dplyr)

ui= fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectizeInput(inputId= "cyl", label= "cyl", 
                     choices= sort(unique(mtcars$cyl)), 
                     selected= sort(unique(mtcars$cyl)),
                     multiple=T,
                     options = list(plugins= list('remove_button')))
    ),
    mainPanel(
      tableOutput("tab")
    )
  )
)

server= function(input, output) {
  df_filtered= reactive({
    mtcars %>%
    {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)}
  })
  output$tab= renderTable(df_filtered())
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

问题:

是否有一个可以在shiny中访问的selectize.js选项,它添加了“一次删除全部”功能,而不是示例中所示的“逐一删除”功能?

我研究了selectize.js 文档但陷入困境。

Mal*_*l_a 5

我认为解决方案是使用reset_button,但是该selected=选项应该更改为 minium (一个选项?),因为它是重置值

library(shiny)
library(shinyjs)
library(dplyr)

ui= fluidPage(
  sidebarLayout(
    sidebarPanel(
      useShinyjs(),
      div(id = "form",
          selectizeInput(inputId = "cyl", 
                         label = "cyl",
                         choices = sort(unique(mtcars$cyl)), 
                         selected=sort(unique(mtcars$cyl))[1], multiple=TRUE)),
          actionButton("reset_input", "Reset")
    ),
    mainPanel(
      tableOutput("tab")
    )
  )
)

server= function(input, output) {

  observeEvent(input$reset_input, {
    shinyjs::reset("form")
  })

  df_filtered= reactive({
    mtcars %>%
    {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)}
  })
  output$tab= renderTable(df_filtered())
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

按下Reset按钮后,所有值立即被清除,并返回selected原始值。selectizeInput