响应多个按钮的闪亮模式对话框

时间:2018-12-10 13:59:20

标签: r shiny modal-dialog

考虑以下应用:

ui <- basicPage(
  actionButton('button1', 'click one'),
  actionButton('button2', 'click two')
)
server <- function(input, output){
  popup <- function(){
    modalDialog(easyClose = T,
                'popup window triggered')
  }
}
shinyApp(ui=ui, server=server)

我的目标是,一旦单击任一按钮,就会触发模式窗口。我意识到我可以为每个按钮创建一个observeEvent,但是在完整的应用程序中,不同的navbar页面上将有许多按钮。因此,为了避免一大堆代码重复,我想将它们收集在一个observeEvent中。我尝试了here的一些建议。

添加

 observeEvent({
    input$button1
    input$button2
    }, {
    showModal(popup())
  })
server()

并没有真正起作用,因为出于某些奇怪的原因,需要在button2响应之前单击button1

相反,添加

  observeEvent(c(input$button1, input$button2), {
    showModal(popup())
  })

使模式窗口已经在启动时出现,这应该不会发生。

那么有没有一种方法可以将多个动作按钮捕获到一个观察事件中而又没有这些不良行为?

1 个答案:

答案 0 :(得分:0)

您需要为ignoreInit = TRUE设置observeEvent

ui <- basicPage(
  actionButton('button1', 'click one'),
  actionButton('button2', 'click two')
)
server <- function(input, output){
  popup <- function(){
    modalDialog(easyClose = T,
                'popup window triggered')
  }

  observeEvent(c(input$button1, input$button2), {
    showModal(popup())
  }, ignoreInit = TRUE)

}
shinyApp(ui=ui, server=server)