2017-02-11 34 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