在Shiny/R如何使用输入从一个模块到其他模块?



我需要从selectInput中选择一个名称,这个名称将用于mod1_UI模块。到目前为止,我是这样做的:

这是我的模块文件

mod1_UI <- function(id) {
ns <- NS(id)
tagList(h1(uiOutput(ns('titulo_select'))))
}
mod1_Server <- function(id, ui) {
moduleServer(id,
function(input, output, session) {
output$titulo_select <- renderUI({
ui
})
})
}

这是我的app:

library(shiny)
ui <- fluidPage(selectInput(
inputId = 'choices',
label = 'Choices',
choices = c('One Title', 'Second Title')
),
#verbatimTextOutput('verbatim'),
mod1_UI('titulo'))
server <- function(input, output, session) {
choices <- reactive({
input$choices
})
# output$verbatim <- renderText({
#   choices()
#})
mod1_Server("titulo", ui = choices())
}
shinyApp(ui, server)

正如你所看到的,没有反应,我改变了选择选项。它只显示了第一个选项

我包含了verbatimOutput,以显示在ui中它是响应的,但当我考虑模块时,它不是。

你必须把无功导体传递给模块,也就是说不要放括号:

mod1_Server("titulo", ui = choices)

然后在模块中你必须使用括号:ui().

也许你正在寻找这个

mod1_UI <- function(id) {
ns <- NS(id)
tagList(
selectInput(
inputId = ns('choices'),
label = 'Choices',
choices = c('One Title', 'Second Title')
),
uiOutput(ns('titulo_select'))
)
}
mod1_Server <- function(id) {
moduleServer(id,
function(input, output, session) {

choices <- reactive({
input$choices
})
output$titulo_select <- renderUI({
choices()
})

})
}
library(shiny)
ui <- fluidPage(
mod1_UI('titulo')
)
server <- function(input, output, session) {
mod1_Server("titulo")
}
shinyApp(ui, server)

相关内容

最新更新