gpt4 book ai didi

r - Shiny 的嵌套/多个对话框

转载 作者:行者123 更新时间:2023-12-02 07:51:31 24 4
gpt4 key购买 nike

是否可以在shiny中打开多个对话框?

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

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

我该如何用 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)

最佳答案

这并不完全是您想要的,但您始终可以在第二个模型关闭后恢复第一个模态。为此,请在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)。

关于r - Shiny 的嵌套/多个对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50468220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com