嵌套Shiny模块无法响应Action Button点击的问题求助
问题出在父模块server_1调用子模块server_2时,错误地使用了NS(id)处理子模块的id。Shiny的moduleServer会自动处理父模块的命名空间,子模块的id只需传入原始名称,不需要额外用NS()转换。
修正后的代码如下:
library(shiny) ui_2 <- function(id){ ns <- NS(id) actionButton(ns('go'), 'go') } server_2 <- function(id) { moduleServer(id, function(input, output, session){ observeEvent(input$go, print('working!')) }) } ui_1 <- function(id) { ns <- NS(id) fluidRow( ui_2(ns('two')) ) } server_1 <- function(id) { moduleServer(id, function(input, output, session) { # 关键修改:直接传入子模块名称'two',无需用NS(id)包裹 server_2('two') }) } ui <- fluidPage( ui_1('one') ) server <- function(input, output, session) { server_1('one') } shinyApp(ui, server)
修改后点击按钮就能在控制台打印working!了。
内容的提问来源于stack exchange,提问作者n-go
相关产品推荐
相关产品推荐

