簡體   English   中英

在 shiny 模塊中使用 updateMaterialSwitch 的觀察事件未更新輸入

[英]observeEvent with updateMaterialSwitch in shiny module not updating input

我想使用 observeEvent 更新 shiny 模塊中的 materialSwitch,觸發事件但 updateMaterialSwitch 不會更改輸入值。 我的代碼片段:

# app server
app_server <- function(input, output, session) {
  r <- reactiveValues()
  observe(r$is_load <- is_load()) # basic reactive true/false - switching according to condition
  callModule(mod_1_server, "1", r = r)
}

# mod_1_server
mod_1_server <- function(input, output, session, r) {

  output$switch_uncumulate_tagvals <- renderUI({
    materialSwitch(
      inputId = "uncumulate_tagvals",
      label = "label",
      value = FALSE,
      status = "warning"
    )
  })

  observeEvent(req(r$is_load() == TRUE), {
    updateMaterialSwitch(session = session,
                         inputId = "uncumulate_tagvals",
                         value = TRUE)
  })

  observeEvent(req(r$is_load() == FALSE), {
    updateMaterialSwitch(session = session,
                         inputId = "uncumulate_tagvals",
                         value = FALSE)
  })

}

當 observeEvents 在 app_server 中時,一切正常。 當我將它們移動到 mod_1_server 時,會觸發事件,但 input$uncumulate_tagvals (我的 inputId)的預期值永遠不會改變。 我的猜測是問題可能出在 session 上,但我不知道如何解決。 有什么建議么?

我認為問題來自缺少命名空間規范,使用session$ns()

# mod_1_server
mod_1_server <- function(input, output, session, r) {

  # namespace fonction
  ns <- session$ns

  output$switch_uncumulate_tagvals <- renderUI({
    materialSwitch(
      inputId = ns("uncumulate_tagvals"),
      label = "label",
      value = FALSE,
      status = "warning"
    )
  })

  observeEvent(req(r$is_load() == TRUE), {
    updateMaterialSwitch(session = session,
                         inputId = "uncumulate_tagvals",
                         value = TRUE)
  })

  observeEvent(req(r$is_load() == FALSE), {
    updateMaterialSwitch(session = session,
                         inputId = "uncumulate_tagvals",
                         value = FALSE)
  })

}

如果您需要有關如何轉換為模塊的更多信息,可以閱讀此博客文章: https://rtask.thinkr.fr/communication-between-modules-and-its-whims/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM