0
我想創建一個閃亮的應用程序,允許我動態添加UI控件。但是,當前的代碼會爲每個新的UI小部件添加一個新行。有沒有辦法將它們添加到fluidRow中,以便每行最多需要4個小部件。有沒有辦法在一個Shiny應用程序中動態插入/添加UI中的fluidRow
此外,有沒有一種方法來添加/刪除控件小部件,而不會默認所有當前的選擇?我現在擁有的代碼基本上重新生成了控件,所有的時間點擊「添加」或「刪除」按鈕,這意味着所有選擇都會重置爲默認值。
非常感謝您的幫助。 代碼如下。
謝謝!
library(shiny)
ui <- shinyUI(fluidPage(
mainPanel(
actionButton("add_btn", "Add Box"),
actionButton("rm_btn", "Remove Box"),
uiOutput("interactionUI"))
))
server <- shinyServer(function(input, output, session) {
# Track the number of input boxes to render
counter <- reactiveValues(n = 0)
observeEvent(input$add_btn, {counter$n <- counter$n + 1})
observeEvent(input$rm_btn, {
if (counter$n > 0) counter$n <- counter$n - 1
})
interaction <- reactive({
n <- counter$n
if (n > 0) {
lapply(seq_len(n), function(i) {
selectInput(inputId = paste0("item", i),
label = paste0("Item", i), choices=c("test","test2"),
selected = NULL,
multiple = 8, selectize = TRUE, width = "20%", size = NULL)
})
}
})
output$interactionUI <- renderUI({ interaction() })
})
shinyApp(ui, server)
看看insertUI/removeUI的演示https://gallery.shinyapps.io/111-insert-ui/ – Geovany
嗨Geovany,謝謝你的提示。我的問題是,有沒有辦法將這些插入的UI放在fluidRow中。因此當您添加新的UI項目時,它將沿水平方向添加,而不是沿垂直方向堆疊所有新UI。 – YDao