Где значения textInput сохраняются из входов динамического c пользовательского интерфейса? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть приложение, которое я тестирую из предыдущего примера: Как динамически добавлять / удалять поля ввода с помощью блестящей кнопки

Мой вопрос: где textInput ценности сохранены? и как я могу отобразить их как verbatimTextOutput в mainPanel.

Я попытался создать renderText с input$textin, но это не сработало

Вот код:

library(shiny)

ui <- shinyUI(fluidPage(
  
  sidebarPanel(
    
    actionButton("add_btn", "Add Textbox"),
    actionButton("rm_btn", "Remove Textbox"),
    textOutput("counter")
    
  ),
  
  mainPanel(
    uiOutput("textbox_ui"),
  verbatimTextOutput("textout")
  )
  
))

server <- shinyServer(function(input, output, session) {
  
  # Track the number of input boxes to render
  counter <- reactiveValues(n = 0)
  
  # Track all user inputs
  AllInputs <- reactive({
    x <- reactiveValuesToList(input)
  })
  
  observeEvent(input$add_btn, {counter$n <- counter$n + 1})
  observeEvent(input$rm_btn, {
    if (counter$n > 0) counter$n <- counter$n - 1
  })
  
  output$counter <- renderPrint(print(counter$n))
  
  textboxes <- reactive({
    
    n <- counter$n
    
    if (n > 0) {
      isolate({
        lapply(seq_len(n), function(i) {
          textInput(inputId = paste0("textin", i),
                    label = paste0("Textbox", i), 
                    value = AllInputs()[[paste0("textin", i)]])
        })
      })
    }
    
  })
  
  output$textbox_ui <- renderUI({ textboxes() })
  
  output$textout <- renderText({ input$textin })
  
})

shinyApp(ui, server)

1 Ответ

1 голос
/ 11 июля 2020

Id из textInput создается inputId = paste0("textin", i), ie:

  • input $ textin1
  • input $ textin2
  • ...

Вы можете вывести, например, первый, используя:

output$textout <- renderText({ input$textin1 })

Вы также можете создать al oop для вывода всех вновь созданные входы:

  output$textout <- renderText({ 
    n <- counter$n
    paste(lapply(1:n,function(n) {input[[paste0('textin',n)]]}),collapse=' ')
    })

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...