代码之家  ›  专栏  ›  技术社区  ›  Grundoc

闪亮:从模块获取输入

  •  1
  • Grundoc  · 技术社区  · 7 年前

    我正在尝试从一个模块获取应用服务器的输入。

    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的内容。并观察它。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Christoph Wolk    7 年前

    代码有两个问题:1)在UI中,您调用模块实例 "t" ,在服务器中 "testm" 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)
    
        2
  •  -2
  •   Grundoc    7 年前

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

    应用程序。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)
    

    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()))
    }
    

    模块2.R:

    module2UI <- function(id) {
      ns <- NS(id)
      tabPanel(NULL,
         textInput(ns("textInput1"), label = h5(""), value = "")
      )}
    
    module2 <- function(input, output, session, data) {
      reactive({input$textInput1})
    }