R Shiny:向模块发出反应值

时间:2017-10-11 06:35:53

标签: r shiny

这应该很简单,但它没有像我期望的那样工作。我所要做的就是在将主动服务器功能中的反应元素传递给模块时获得“第一光”。这个玩具示例的要点很简单:用户在textInput()框中键入任何内容,该值显示在两个verbatimTextOutput()框中,一个来自主服务器,一个来自模块服务器。我正在寻找两个框来显示用户输入的内容,但模块框没有。这告诉我模块没有正确接收参数,我没有看到我的错误。谢谢!

library(shiny)

ui <- function(request) {
    fluidPage(
        column(12, textInput("par", "Parameter", value = "")),
        column(12, parametersMDUI(0)),
        column(12, verbatimTextOutput("view", placeholder = TRUE))
          )
}

server <- function(input, output, session) {
    param <- reactive({ input$par })
    callModule(parametersMDServer, 0, param)
    output$view <- renderText({ param() })
}


parametersMDUI <- function(id) {
    ns <- NS(id)

    tags$div(
        column(12, verbatimTextOutput("symbolName", placeholder = TRUE)),
        id = ns('parametersMDui')
    )
}


parametersMDServer <- function(input, output, session, param) {
    ns = session$ns

    output$symbolName <- renderText({ param })
}

shinyApp(ui = ui, server = server, enableBookmarking = "server")

1 个答案:

答案 0 :(得分:1)

您似乎在代码中使用tags$div(..., id = "my_output_id"),然后尝试使用renderUI访问div?这不行。使用“标准”

# server side
output$my_output_id <- renderUI({ ... })

# client side
uiOutput("my_output_id")

代替。除此之外,您忘记使用ns中的parametersMDUI功能。我不再发布你的代码的任何固定版本,因为你的错误开始重复,你真的需要能够自己发现它们。