闪亮的操作按钮在模块中不起作用

use*_*203 1 r shiny shinymodules

我已经从模块定义了我的操作按钮,如下所示。

现在按下时它无法触发观察事件。我认为模块是隔离的且自给自足的,但似乎并非如此。将其放入我的服务器中,效果很好,但我不想弄乱我的服务器。

任何想法?

cool_UI <- function(id) {
  ns <- NS(id)
  tagList(
  uiOutput(ns("myUi"))
  )
}

cool <- function(input, output, session) {

  observeEvent(input$butonid,{
    print("Button from Module")
  })

  output$myUi <- renderUI({
    tabsetPanel(

      tabPanel(title = "sometitle",actionButton("butonid","My Button"))
    )
  })
}

library(shiny)

ui <- fluidPage(
  cool_UI("myUi")
)

server <- function(input, output, session) {
  callModule(cool,"myUi")
}

shinyApp(ui, server)

Run Code Online (Sandbox Code Playgroud)

Lim*_*mey 6

您需要为您在模块服务器函数中创建的按钮的 ID 命名空间。

cool <- function(input, output, session) {
  ns <- session$ns

  observeEvent(input$butonid,{
    print("Button from Module")
  })

  output$myUi <- renderUI({
    tabsetPanel(
      tabPanel(title = "sometitle",actionButton(ns("butonid"),"My Button"))
    )
  })
}
Run Code Online (Sandbox Code Playgroud)

ns <- session$ns请注意模块服务器函数顶部包含的。

input在模块服务器函数中具有命名空间,但用作小部件 ID 的文本字符串则没有。