У меня есть набор динамических форм пользовательского интерфейса, создаваемых во вкладках.Я использовал динамические наблюдения, чтобы проверить, какая форма сохраняется.Пожалуйста, смотрите код ниже
library(shiny)
ui <- fluidPage(
actionButton("generate_tab","Generate Tabs"),
tabsetPanel(id="tabs",
uiOutput('tabsN')),
dataTableOutput("saved_tabs_output")
)
server <- function(input, output, session) {
rv<- reactiveValues(no_of_tabs =0)
#generating the UI dynamically
observeEvent(input$generate_tab,{
rv$no_of_tabs <- rv$no_of_tabs + 1
appendTab(inputId = "tabs",
tabPanel(title = paste0("Tab_",rv$no_of_tabs),
selectInput(paste0("Input",rv$no_of_tabs),paste0("Input",rv$no_of_tabs), choices = c('',LETTERS), selected = NULL),
actionButton(paste0("submit_input",rv$no_of_tabs),"submit input")
)
)})
# Reading the inputs upon clicking of Submit Input in each tab
#dynamic Observe Event needs to be set up dependent on number of Tabs (rv$no_of_tabs)
observeEvent(lapply(paste0("submit_input",1:rv$no_of_tabs), function(x){input[[x]]
}
),{
rv$inputs <-sapply(paste0("Input",1:rv$no_of_tabs),
function(x)input[[x]])
},ignoreInit = TRUE )
output$saved_tabs_output <- renderDataTable({
as.data.frame(rv$inputs)
})
}
shinyApp(ui, server)
, потому что несколько нажатий кнопки подтверждения проверяются в одной формулировке applyEvent lapply, она также принимает входные данные из неподтвержденных форм.Вот пример
Шаг 1: Нажмите «Создать вкладки» 4 раза, чтобы сгенерировать Tab1, Tab2, Tab3, Tab 4. Нажмите «Tab» 1
Шаг 2:Выберите B на вкладке 1. НЕ нажимайте Submit
Шаг 3: Выберите D на вкладке 4 и нажмите Submit
Желаемым выходом является то, что обновляется только Input4, а не input1, однако в этом случае и B, и D сохраняются.Есть какие-нибудь указания относительно того, как это можно исправить?