如何解决嵌套callModules的闪亮名称空间问题
我正在寻找一个简单的模块化设计的Shiny应用程序的帮助。我认为问题是名称空间问题,因此下面的示例被设置为我实际项目的简化版本。我的感觉是我没有将output$uis
设置为正确的名称空间,但是我迷失了如何映射到它。
该应用会生成select_formUI
的3个实例,并且应该是与callModules
的{{1}}的服务器返回值的3个实例相关的命名空间。 select_form
中的值会以小标题的形式传递出去。内部模块将所有3个小标题绑定为一个反应性小标题select_form
。
在我取消注释all_gen_forms_rctv
中的input_slt_type_db
列并返回pass_back_test
之前,该过程正常进行。我正在寻找帮助,请在输出中包括此列,并查看input$slt_type_db
通过all_gen_forms_rctv
对用户选择的更改。
output$outpt_test
解决方法
问题在于select_form模块的UI函数不知道在另一个模块中正在调用它。因此,您需要通过将ID包裹在session$ns
中来告知它。 callModule
函数可以自行处理,因此这里无需更改任何内容。 inner_module
函数看起来像这样
inner_module <- function(input,output,session) {
rctval_ui <- reactiveValues(all_ui=NULL)
gen_forms <- reactiveValues()
all_gen_forms_rctv <- reactive({
browser()
dplyr::bind_rows(lapply(reactiveValuesToList(gen_forms),function(current_module_output) {
current_module_output$pass_back_test()
}))
})
observeEvent(input$btn_start,{
for(i in 1:3){
x_id = glue("mod_{i}")
rctval_ui$all_ui[[x_id]] <- select_formUI(session$ns(x_id))
gen_forms[[x_id]] <- callModule(select_form,x_id)
}
})
output$outpt_forms_ui <- renderUI({
ns <- session$ns
tagList(
actionButton(ns('btn_start'),label = 'start'),verbatimTextOutput(ns('outpt_test')),hr(),uiOutput(ns('uis'))
)
})
output$uis <- renderUI({
ns <- session$ns
tags$div(id = environment(ns)[['namespace']],tagList(rctval_ui$all_ui))
})
output$outpt_test <- renderPrint({all_gen_forms_rctv()})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。