Я пытаюсь удалить интерфейс в блестящем приложении. У меня есть код для удаления каждого элемента пользовательского интерфейса отдельно с отдельными кнопками удаления. Но, кроме того, я также хотел бы, чтобы кнопка удаления c в общем случае удаляла все вставленные элементы интерфейса одновременно. Для этой задачи я попробовал селектор из insertUI и смог удалить все добавленные интерфейсы.
Но после выполнения этой конкретной задачи c, то есть после одновременного удаления всех пользовательских интерфейсов, «блестящий» не позволяет мне вставлять новые пользовательские интерфейсы. Кажется, что идентификатор подразделения был удален навсегда и не может быть восстановлен даже после вызова кнопки добавления. Как решить эту проблему, пожалуйста, кто-нибудь направляет меня.
Ниже приведен работоспособный код, принятый из stackoverflow
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
actionButton('addBtn', 'Add input Set'),
actionButton("remove","Delete"),
tags$div(id='inputList')
),
mainPanel()
))
server <- function(input, output) {
observeEvent(input$addBtn, {
# Increment by 1
nr <- input$addBtn + 1
# Creating a list of IDs based on our increments
id <- paste0("input",nr)
row_id <- paste0("newInput",nr)
# Inserting the UIs
insertUI(
selector = '#inputList',
ui=div(
id = row_id,
selectizeInput(
inputId = id,
choices = c("Stuff","to","input"),
selected = c("Stuff"),
label = "An Input:"
),
actionButton(paste0('removeBtn',nr), 'Remove')
)
)
# Removes UI seperately
# Uses Seperate remove button for each ui
observeEvent(input[[paste0('removeBtn',nr)]],{
shiny::removeUI(
selector = paste0("#newInput",nr)
)
})
})
# Remove all the added UIs at once
# InsertUI doesn't work after this
observeEvent(input$remove,{
removeUI(selector = "#inputList")
})
}
shinyApp(ui, server)