我可以从同一个R Shiny模块生成几个uiOutput-s吗?

时间:2016-02-05 19:57:50

标签: r module shiny

这是我在R Shiny中使用模块的代码。

我创建了一个名为MyModule的模块,并希望生成两个UI元素:selectInput和textInput。这段代码只是一个例子 - 在我的实际应用中,第二个元素需要第一个元素的结果,所以我想分别生成它们。

我不明白为什么第二个uiOutput没有生成它所包含的UI元素:

 library(shiny)

    # Define UI 
    ui <- shinyUI(fluidPage(MyModuleUI("one")))

    # Define server logic 
    server <- shinyServer(function(input, output, session) {callModule(MyModule, 'one')})

    #Here is my UI Module 
    MyModuleUI <- function(id) {
      ns <- NS(id)
      fluidRow(
        uiOutput(ns('ChooseNumber')),
        uiOutput(ns('EnterText'))

      )
    }

    #Here is my server Module 
    MyModule <- function(input, output, session) {

      output$ChooseNumber <- renderUI({
        # In my bigger program I need this UI to be generated with some database values, 
        # thats why it is in the Server part of the Module 
        ns <- session$ns
        selectInput(ns("TheNumber"), label = 'Select a number', c(1,2,3))

      })

      # Same here 
      output$EnterText <- renderUI({
        ns <- session$ns
        textInput(ns('TheText'),label = 'Enter a text:',value = 'ABC')
      })

    }

    # Run the application 
    shinyApp(ui = ui, server = server)

谢谢!

0 个答案:

没有答案