我一直在研究以下问题。
这里
然而,我被这个问题的一个变体卡住了:
我试图只传递某些值(vals))从inputModule到outputModule。
但是,我的inputModule还有一个额外的渲染输出。这似乎阻止了应用程序的工作。
在我的实际应用中,inputModule需要将数据传递给一个嵌套的(outputmodule),并产生额外的输出和UI。
如何限制callModule或MyImProxy仅为vals而不是通过输出$mytext到我的outputModule在应用服务器调用?
是否有可能让这段代码运行,同时保持output$mytext
在inputModule ' ?
多谢
library(shiny)
inputModuleUI <- function(id){
ns <- NS(id)
wellPanel(h3("Input Module"),
textInput(ns('text1'), "First text"),
textInput(ns('text2'), "Second text"),
textInput(ns('text3'), "Third text")
),
verbatimTextOutput(ns("mytext"))
}
inputModule <- function(input, output, session){
vals <- reactiveValues()
observe({vals$text1 <- input$text1})
observe({vals$text2 <- input$text2})
return(vals)
#I need this output to stay in the inputModule
output$mytext <- renderPrint({
paste(input$text3)
})
}
outputModuleUI <- function(id){
tagList(
inputModuleUI('IM'),
wellPanel(h3("Output Module"),
verbatimTextOutput(NS(id, "txt")))
)
}
outputModule <- function(input, output, session, ImProxy){
output$txt <- renderPrint({
paste(ImProxy$text1, "&", ImProxy$text2)
})
}
ui <- fluidPage(
outputModuleUI('OM')
)
server <- function(input, output, session){
#here is where I need to only pass vals to MyImProxy...
MyImProxy <- callModule(inputModule, 'IM')
callModule(outputModule, 'OM', MyImProxy)
}
shinyApp(ui, server) ```
您的问题在于inputModuleUI
。如果你组合了几个ui元素,用tagList
:
inputModuleUI <- function(id){
ns <- NS(id)
tagList(
wellPanel(h3("Input Module"),
textInput(ns('text1'), "First text"),
textInput(ns('text2'), "Second text"),
textInput(ns('text3'), "Third text")
),
verbatimTextOutput(ns("mytext"))
)
}