Shiny:从模块获取输入

Shiny:从模块获取输入

问题描述:

我试图从模块获取输入到应用服务器。Shiny:从模块获取输入

这里是我想要的一个例子中,app.R:

library(shiny) 
source("test.R") 
ui <- fluidPage(
    tabPanel("tt", testUI("t")) 
) 

server <- function(input, output) { 
    ret <- callModule(test, "testm") 
    print(ret) 
} 

shinyApp(ui = ui, server = server) 

测试模块:

testUI <- function(id) { 
    ns <- NS(id) 
    tabPanel(NULL, 
     textInput(ns("textInput1"), label = h5(""), value = "") 
)} 

    test <- function(input, output, session, data) { 
    reactive({input$textInput1}) 
    } 

我想从应用程序的服务器功能打印textInput1的内容.R并观察它。

您的代码有两个问题:1)在UI中,您调用模块实例"t",在服务器"testm"中。这些需要相同。 2)模块返回一个反应;这需要在被动环境中进行评估:reactive,observerender

library(shiny) 
source("test.R") 
ui <- fluidPage(
    tabPanel("tt", testUI("testm")) 
) 

server <- function(input, output) { 
    ret <- callModule(test, "testm") 
    observe(print(ret())) 
} 

shinyApp(ui = ui, server = server) 
+0

坦克您的回复,现在的作品! – Grundoc

上面的解决方案解决了我提供的示例中的问题。

但是,我不解决它为我的应用程序:

我我的应用我有app.R,一个module1.R和module2.R该模块2是这是自己调用由模块1电话app.R.我想从module1函数中打印'textInput1'的值。

app.R:

library(shiny) 
source("module1.R") 
ui <- fluidPage(
    tabPanel("Module 1", module1UI("module1")) 
) 

server <- function(input, output) { 
    callModule(module1, "module1") 
} 

shinyApp(ui = ui, server = server) 

module1.R:

source("module2.R") 

module1UI <- function(id) { 
    ns <- NS(id) 
    tabPanel(NULL, 
    tabPanel("Module 2", module2UI("module2")) 
)} 

module1 <- function(input, output, session, data) { 
    reactive({input$textInput1}) 
    ret <- callModule(module2, "module2") 
    observe(print(ret())) 
} 

module2.R:

module2UI <- function(id) { 
    ns <- NS(id) 
    tabPanel(NULL, 
    textInput(ns("textInput1"), label = h5(""), value = "") 
)} 

module2 <- function(input, output, session, data) { 
    reactive({input$textInput1}) 
}