【问题标题】:R Shiny - Passing selectizeInput as argument to ShinyModuleR Shiny - 将 selectizeInput 作为参数传递给 ShinyModule
【发布时间】:2020-12-07 13:54:03
【问题描述】:

这是我的服务器功能代码:

dragularServer <- function(id, input_col) {​​​​​
  moduleServer(
    id,
    function(input, output, session = getDefaultReactiveDomain()) {​​​​​
   
      output$elementsInput <- renderUI({​​​​​
        lapply(input_col, function(x) tags$div(class="inlinedisplay", drag = x, x))
      }​​​​​)
   
    }​​​​​
  )
}​​​​​

我想将 selectizeinput 中的值传递给函数。

selectizeInput("columns_1", "Relevant vars", choices = unique(data$var), selected = c("Tradition"), multiple = T)

## Übergabe
dragularServer("id_1", input_col = input$columns_1)

数据正确传递一次(加载时),但不对任何更改做出反应。谁能解释这种行为?跟命名空间有关系吗?

【问题讨论】:

    标签: r shiny shinymodules


    【解决方案1】:

    您对dragularServer 的输入只是一个值而不是响应式,因此它只会在启动时传递一次。要使其具有反应性,请使用 reactive({input$columns_1}) 并调整服务器中的代码以处理反应性值,即 input_col()

    【讨论】:

    • 谢谢,这行得通。没有模块,我不必将它们包装在反应式表达式中,为什么在这种情况下有必要?我希望它是某种命名空间问题...
    • 是的,我不完全确定。我的猜测是它与反应值的注册方式有关。如果我没记错的话,它也可以将完整的input 对象(原样,没有reactive)传递给模块,然后在模块中使用input_col[["columns_1]]。也许我以后可以做更多的挖掘
    • 好的,至少它有效,很公平:-)。感谢您的帮助
    最近更新 更多