Я создаю приложение, подобное Google Maps, в котором пользователь выбирает источник и пункты назначения. Но в моем коде приложение автоматически обновляет входы, и я не смог найти способ изолировать каждый из входов по отдельности. У кого-нибудь есть идеи, как решить эту проблему?
rm(list=ls())
library(shiny)
#
ui <- fluidPage(titlePanel("Getting Iframe"),
sidebarLayout(
sidebarPanel(
fluidRow(
column(10, selectInput("Origin", label=h5("Origin"),choices=c(paste0("City_",seq_len(5)))))
),
fluidRow(
actionButton("add_btn", "Add Destination"),
actionButton("rm_btn", "Remove Destination")
),
uiOutput("dest_ui")
),
mainPanel(fluidRow(
htmlOutput("frame")
)
)
))
#
server <- function(input, output) {
#
## Counts how many destinations user wants
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
})
#
## Destination selection
dest <- reactive({
n <- counter$n
if (n > 0) {
isolate({
lapply(seq_len(n), function(i) {
selectInput(inputId = paste0("Destination", i),
label = paste0("Destination ", i),
choices=c(paste0("City_",seq_len(5))))
})
})
}
})
output$dest_ui <- renderUI({ dest() })
}
shinyApp(ui, server)
Что я хотел бы сделать, это сохранить выбор, когда пользователь нажмет кнопку добавления пункта назначения.