闪亮的嵌套/多个对话框

Fab*_*ing 6 r modal-dialog shiny

是否可以在闪亮的情况下打开多个对话框?

在下面的应用程序中,我想显示一个模态对话框,它本身可以打开另一个“详细信息”模态对话框。这很有效,但只要打开“详细信息”对话框,第一个对话框就会消失。

我想在第一个对话框的“顶部”打开第二个对话框,每当我关闭第二个对话框时,我都想再次看到第一个对话框。

我将如何用闪亮的方式做到这一点?

library(shiny)

ui <- basicPage({
  actionButton("openDialog", "Open dialog")
})

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

  observeEvent(input$openDialog, {
    showModal(
      modalDialog(
        actionButton("openDetails", "OpenDetails")
      )
    )
  })

  observeEvent(input$openDetails, {
    showModal(modalDialog(div("Test")))
  })
}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

小智 7

这并不完全是您想要的,但您始终可以在第二个模型关闭后恢复第一个模态。为此,请在library(shiny)语句之后添加一个函数来显示第一个模型:

library(shiny)
showFirstModal <- function() {
  showModal(
    modalDialog(
      actionButton("openDetails", "OpenDetails")
    )
  )
}
Run Code Online (Sandbox Code Playgroud)

然后将调用第一个模态的观察事件代码更改为调用该函数的代码:

observeEvent(input$openDialog, {
    showFirstModal()
})
Run Code Online (Sandbox Code Playgroud)

然后,在创建第二个模式时,强制用户点击您自己的操作按钮将其关闭。这将允许您监视该模式的关闭,然后恢复第一个模式:

observeEvent(input$openDetails, {
    showModal(modalDialog(div("Test"),
          easyClose=FALSE,
          footer = actionButton("restoreModal",label = "Dismiss")))
})
Run Code Online (Sandbox Code Playgroud)

最后,调用该函数以在按下关闭按钮时重新显示第一个模态:

observeEvent(input$restoreModal, {
    showFirstModal()
})
Run Code Online (Sandbox Code Playgroud)

如果您确实想在彼此的顶部显示多个模态框(这可能看起来很混乱),您可以手动创建模态框(有关如何完成此操作的信息,请参阅https://www.w3schools.com/howto/howto_css_modals.asp ) 。