一个模块可以在R闪亮中包含两个输出吗?
从App.R文件中,我正在调用包含数据表和图表的模块。 但是,它没有在没有任何错误的情况下在闪亮的网页上显示。
我想知道一个模块是否无法处理两个输出。我在一个模块中有两个输出的原因是该图表基于数据集,用于生成数据表。如果我为图表创建额外的模块,我将不得不再有一个查询来再次从数据库中获取数据框。
我该怎么办?我应该只有另一个模块与另一个查询?
答案 0 :(得分:0)
简短的回答是:是的,他们可以!
以下是包含两个输出的模块示例:按钮和文本。
library(shiny)
myModuleServer <- function(input, output, session){
ns <- session$ns
output$out1 <- renderText({
paste("Button has been pressed", input$btn, "times")
})
output$out2 <- renderUI({
actionButton(ns("btn"), "btn_label")
})
}
myModuleUI <- function(id){
ns <- NS(id)
fluidPage(
textOutput(ns('out1')),
uiOutput(ns('out2'))
)
}
ui <- fluidPage(
titlePanel("Module example"),
myModuleUI('module_id')
)
server <- function(input, output, session){
callModule(myModuleServer, 'module_id')
}
shinyApp(ui, server)
我的猜测是你遇到了名称空间的并发症。当我开始使用模块时(很明显),当我开始使用外部库,如shinyBS
,shinyjs
等时,这种情况发生在我身上。对于某些功能它没有必要使用ns
函数,对某些人而言。
一个具体的例子是shinyjs::disable
函数,我必须使用shinyjs::disable('checkbox')
而不是shinyjs::disable(ns('checkbox'))
来调用它。也就是说,因为shinyjs
在其内部例程中使用session::ns
。见here