2017-09-05 12 views
0

モジュールからアプリケーションサーバーへの入力を取得しようとしています。ここ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とそれを観察する。

答えて

0

コードに2つの問題があります。1)UIで、サーバ"testm"のモジュールインスタンス"t"を呼び出します。これらは同一である必要があります。 2)モジュールは反応性を返す。これは反応的な状況、すなわちreactive,observeまたはrenderで評価する必要があります。

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

0

上記の解決策は、私が提供した例の問題を解決します。

しかし、私は私のアプリのためにそれを解決していません:

I私のアプリ私はapp.R、module1.Rとモジュール2は、自身がして電話でのModule1によってコールされmodule2.Rを持っていますapp.R.私は 'textInput1'の値をmodule1関数から出力したい。

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}) 
} 
関連する問題