是否可以在闪亮的情况下打开多个对话框?
在下面的应用程序中,我想显示一个模态对话框,它本身可以打开另一个"详细信息"模态对话框。这很有效,但每当"细节"对话框打开,第一个对话框消失。
我想打开第二个对话框"在顶部"第一个,每当我关闭第二个对话框时,我想再次看到第一个对话框。
我如何用闪亮的方式做到这一点?
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)
答案 0 :(得分:1)
这不完全是您想要的,但是您始终可以在取消第二个模型后恢复第一个模态。为此,请在您的library(shiny)语句之后,添加一个函数以显示第一个模型:
library(shiny)
showFirstModal <- function() {
showModal(
modalDialog(
actionButton("openDetails", "OpenDetails")
)
)
}
然后将调用第一个模式的观察事件代码更改为调用该函数的代码:
observeEvent(input$openDialog, {
showFirstModal()
})
然后,在创建第二个模式时,强制用户单击您自己的操作按钮以将其关闭。这将允许您监视该模式的关闭,然后恢复第一个模式:
observeEvent(input$openDetails, {
showModal(modalDialog(div("Test"),
easyClose=FALSE,
footer = actionButton("restoreModal",label = "Dismiss")))
})
最后,当点击关闭按钮时,调用该函数以重新显示第一个模态:
observeEvent(input$restoreModal, {
showFirstModal()
})
如果您确实要在彼此上方显示多个模式框(可能看起来很杂乱),则可以手动创建模式(有关如何完成此操作的信息,请参见https://www.w3schools.com/howto/howto_css_modals.asp)。