【问题标题】:R Shiny: Reactive Value in Modal not workingR Shiny:模态中的反应值不起作用
【发布时间】:2019-03-06 22:04:30
【问题描述】:

我的modalDialog 的标题是一个reactiveValue。一旦在模态中更改了某个输入,我希望标题更改。我尝试了几种不同的方法,但无法让它无缝工作。标头要么不更新,仅在我关闭/重新打开模式时更新,或者在立即更新标头时导致模式完全重新渲染。

目前,我坚持最后一个(完全重新渲染模式)。但是,当我创建最小的、可重现的示例(如下)时,只有在我关闭并重新打开模式时,标题才会更新。

ui<-fluidPage(
  actionButton(inputId="model", label="Edit Model")
)

server<-function(input, output, session) {
  rv<-reactiveValues(header="Standard Model")

  observeEvent(input$model, {
    showModal(
      modalDialog(
        fluidPage(
          fluidRow(h3(rv$header)),
          sliderInput(inputId="factor_1", "Factor #1", value=70, min=0, max=100),
          sliderInput(inputId="factor_2", "Factor #2", value=30, min=0, max=100)
        ),
        footer=modalButton("Save Weights"), size="s", easyClose=TRUE
      )
    )
  })

  observe({if (!is.null(input$factor_1)) {
    if (input$factor_1!=70) {
      rv$header<-"Custom Model"
      }
    }
  })
}

shinyApp(ui=ui, server=server)

基本上,一旦第一次更改因素 #1 的输入,我希望标题从“标准模型”更改为“自定义模型”(无需关闭/重新打开或重新呈现模态)。

【问题讨论】:

    标签: r shiny modal-dialog


    【解决方案1】:

    使用renderUI/uiOutput

    library(shiny)
    
    ui <- fluidPage(
      actionButton("model", label = "Edit Model") 
    )
    
    server <- function(input, output, session) {
    
      rv <- reactiveValues(header = "Standard Model")
    
      observeEvent(input[["model"]], {
        showModal(
          modalDialog(
            fluidPage(
              uiOutput("modalTitle"),
              sliderInput("factor_1", "Factor #1", value=70, min=0, max=100),
              sliderInput("factor_2", "Factor #2", value=30, min=0, max=100)
            ),
            footer = modalButton("Save Weights"), 
            size="s", easyClose=TRUE
          )
        )
      })
    
      output[["modalTitle"]] <- renderUI({
        fluidRow(h3(rv$header))
      })
    
      observe({
        if (!is.null(input$factor_1)) {
          if (input$factor_1 != 70) {
            rv$header <- "Custom Model"
          }
        }
      })
    
    }
    
    shinyApp(ui=ui, server=server)
    

    【讨论】:

      猜你喜欢
      • 2017-11-17
      • 2021-06-01
      • 2020-04-23
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2018-10-22
      • 2020-07-08
      相关资源
      最近更新 更多