当前位置:  开发笔记 > 编程语言 > 正文

使用动态数量的ui元素更新模块中的输入

如何解决《使用动态数量的ui元素更新模块中的输入》经验,为你挑选了0个好方法。

我想编写一个动态数字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)

如果您在数字输入字段,从改变元素的个数32,我们看到,仍有3中的元素input.这种行为是故意的吗?如果是这样,我如何更新input它只包含有效的插槽?

更新

以下是2个相关的截图:

选择了3个产品

选择了2个产品

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有