闪亮的操作按钮不适用于模块

时间:2020-06-10 15:14:37

标签: 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)

1 个答案:

答案 0 :(得分:3)

您需要为在模块服务器功能中创建的按钮的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"))
    )
  })
}

请注意,模块服务器功能顶部包含ns <- session$ns

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