2017-02-11 107 views
1

例子:闪亮selectizeInput与功能“删除所有一次刻录”

继闪亮例如app.R文件包含一个selectizeInput UI。所选元素可以使用options = list(plugins= list('remove_button'))删除。

enter image description here

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) 

问:

是否有增加了一个功能,“删除所有在一次性”,而不是“删除一个闪亮的访问的selectize.js选项如示例中所示,“一个一个”?

我研究了selectize.js docu但卡住了。

+0

你想将它集成到窗体中吗?还是下面的按钮就足够了? – BigDataScientist

+0

@BigDataScientist最好的情况下集成在窗体中。 – user2030503

+0

如果没有人提出整合的方式,我可以用非花哨的方式来帮忙;) – BigDataScientist

回答

1

我认为它的解决方案走的是使用reset_button,但是selected=选项应改为铅丹(一种选择?)因为它是重置价值

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) 

Reset按钮后,所有selected值被立即清除,返回主要值selectizeInput

+0

Thx很多。这个解决方案在功能上是可行的,不幸的是它增加了一个我需要避免的按钮。我正在寻找一种解决方案,它是一种集成在表单中的解决方案。无论如何,你的贡献和时间花费。 – user2030503