【问题标题】:Facing issues to access shiny module dynamic input value面临访问闪亮模块动态输入值的问题
【发布时间】:2021-04-27 12:39:02
【问题描述】:

我在从闪亮的主服务器功能中的滑块访问闪亮模块的动态输入值时遇到问题。

在选择Metric2的选择中,我应该能够看到具有特定范围和默认值的滑块。这完美无缺。但是滑块的值预计会在闪亮的主要服务器功能中显示为 TextOutput,但这是失败的。

主要闪亮文件:

library(shiny)


source("modules/showLowHighSliders.R")

ui <- fluidPage(
  fluidRow( 
    column(
      3,
      selectizeInput(
        inputId = "metricID",
        selected = NULL,
        multiple = TRUE,
        label = "Select a metric",
        choices = list(
          Type1 = c("metric1", "metric2", "metric3"),
          Type2 = c("metric4","metric5")
        ),
        options = list('plugins' = list('remove_button'))
      )
    ),
    column(2, 
           uiOutput(outputId = "lowerThresholdText"),
           showLowHighSlidersUI("sliders-metric2")
    )
  )
)

server <- function(input, output){

  
  ret <- callModule(module = showLowHighSliders, 
             id = "sliders-metric2", 
             metrics_selected=reactive(input$metricID))

  output$lowerThresholdText <- renderText({
    if(!is.null(input$metricID )){
      if(input$metricID == 'metric2'){
        paste("Lower Value: ", ret() )
        
      }
    }

  })
}

shinyApp(ui, server)

闪亮模块:showLowHighSliders.R


showLowHighSlidersUI <- function(id) {
  ns <- NS(id)
  fluidPage(
    fluidRow(
      column(12, 
             tagList(
                # uiOutput(ns("lowerThresholdText")),
               uiOutput(ns("lowerThresholdSlider"))
             )
      )
    )
  )
}

# Function for module server logic
showLowHighSliders <- function(input, output, session, metrics_selected) {
  
 reactive({input$mySlider})
  
  output$lowerThresholdSlider <- renderUI({
    #print(metrics_selected())
    if(!is.null(metrics_selected() ) ){
      if('metric2' %in% metrics_selected() ){
        sliderInput(
          inputId = "mySlider",
          label = "",
          min = 0,
          max = 200,
          value = 20
        )
      }
    }
  })
  
  # output$lowerThresholdText <- renderText({
  #   #print(metrics_selected)
  #   if(!is.null(metrics_selected() )){
  #     if('SMA' %in% metrics_selected()){
  #       paste("Lower SMA: ", input$mySlider )
  #     }
  #   }
  #   
  # })
  
}

我也无法访问注释部分中显示的模块本身内的动态输入滑块值。

感谢任何帮助。

【问题讨论】:

    标签: r shiny shinymodules


    【解决方案1】:

    试试这个

    # Function for module server logic
    showLowHighSliders <- function(input, output, session, metrics_selected) {
      
      # reactive({input$mySlider})
      ns <- session$ns
      output$lowerThresholdSlider <- renderUI({
        #print(metrics_selected())
        if(!is.null(metrics_selected() ) ){
          if('metric2' %in% metrics_selected() ){
            sliderInput(
              inputId = ns("mySlider"),
              label = "",
              min = 0,
              max = 200,
              value = 20
            )
          }
        }
      })
      
      output$lowerThresholdText <- renderText({
        #print(metrics_selected)
        if(!is.null(metrics_selected() )){
          #if('SMA' %in% metrics_selected()){
            paste("Lower SMA: ", session$input$mySlider )
          #}
        }
    
      })
      
    }
    

    【讨论】:

    • 感谢@YBS 的回复。正如您指出的那样,它在模块内工作,当我使用reactive({session$input$mySlider}) 返回它然后在父应用程序中捕获它时,它也可以从父应用程序工作,如主要问题所示。希望这是模块和应用程序之间正确的通信方式。再次感谢您的回复!
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2017-09-20
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多