R-将selectizeInput作为参数传递给ShinyModule

R-将selectizeInput作为参数传递给ShinyModule,r,shiny,shinymodules,R,Shiny,Shinymodules,这是我的服务器功能代码: dragularServer <- function(id, input_col) {​​​​​ moduleServer( id, function(input, output, session = getDefaultReactiveDomain()) {​​​​​ output$elementsInput <- renderUI({​​​​​ lapply(input_col, function(

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

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))
      }​​​​​)
   
    }​​​​​
  )
}​​​​​

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

您输入到
dragularServer
中的内容只是一个值,而不是一个响应,因此在启动时只传递一次。要使其具有反应性,请使用
reactive({input$columns\u 1})
并调整服务器中的代码以处理反应性值,即
input\u col()。如果没有模块,我不必将它们包装在反应式表达式中,为什么在这种情况下需要这样做?我以为这是某种名称空间问题……是的,我不完全确定。我的猜测是,这与如何注册反应值有关。如果我没有记错的话,它还可以将完整的
输入
对象(没有
反应式
)传递到模块,然后在模块中使用
输入列[[“columns\u 1]]]
。也许我以后可以做更多的挖掘OK,至少它可以工作,很公平:-)。谢谢你的帮助
selectizeInput("columns_1", "Relevant vars", choices = unique(data$var), selected = c("Tradition"), multiple = T)

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