我想编写一个动态数字n的模块,比如UI元素.我发现input
插槽与当前的元素数量不对应,但是在会话期间选择的最大数量:
library(shiny) library(plyr) testUI <- function(id) { ns <- NS(id) uiOutput(ns("container")) } test <- function(input, output, session, numElems) { output$container <- renderUI(do.call(tagList, llply(1:numElems(), function(i) selectInput(session$ns(paste0("elem", i)), label = i, choices = LETTERS[sample(26, 3)])))) getNames <- reactive(reactiveValuesToList(input)) list(getNames = getNames) } ui <- fluidPage(numericInput("n", "Number of Elems", value = 3), testUI("column1"), verbatimTextOutput("debug")) server <- function(input, output, session) { getN <- reactive(input$n) handler <- callModule(test, "column1", getN) output$debug <- renderPrint(handler$getNames()) } shinyApp(ui, server)
如果您在数字输入字段,从改变元素的个数3
来2
,我们看到,仍有3
中的元素input
.这种行为是故意的吗?如果是这样,我如何更新input
它只包含有效的插槽?
更新
以下是2个相关的截图: