我有一个具有服务器功能的闪亮应用程序;
shinyServer(function(input, output) {
chosen_fam <- reactive({ input$fam })
output$newui <- renderUI({ NewProductUI("newproduct", fam = chosen_fam()) })
output$newbtn <- renderUI({ NewProductButtonUI("newproduct", fam = chosen_fam()) })
callModule(NewProduct, id = "newproduct", fam = chosen_fam())
})
在NewProduct模块内部,有类似以下内容:
NewProduct <- function(input, output, session, fam){
observeEvent(input$submitnew, {
print(paste0("Adding.... ", fam))
row <- c(fam, input$variable)
upload_to_googlesheets(token, row)
})
根据所选择的系列呈现UI,并且服务器模块也根据系列执行不同的操作。
渲染UI似乎工作正常,但是callModule
中的“ fam”变量不会更新(因此,它始终是第一个选择的族的结果)。输入中的变量可以正常运行,因此我想这与范围界定有关(它可能正在“ newproduct”命名空间中寻找“ fam”?)。
如何明确告诉callModule
使用会话名称空间中的反应式表达式?还是有一种方法可以将fam变量添加到“ newproduct”命名空间?
答案 0 :(得分:0)
您必须给电抗导体本身
callModule(NewProduct, id = "newproduct", fam = chosen_fam)
(无括号)。并在模块中:
row <- c(fam(), input$variable)
(括号)。