闪亮:是否可以通过在tabsPanel()的选项之间进行切换来触发observeEvent()的方法

时间:2019-10-15 21:28:11

标签: r shiny notifications tabs

我正在开发一个Shiny应用程序,我想知道是否有可能或其他人是否能够通过在observeEvent()之间进行切换来触发tabPanel()

由于@SriPaladugu code和@DeanAttali Shinyjs软件包,我在执行某些操作后启用和禁用tabPanel()方面有经验,但是我不知道这两种方法/软件包的范围在回答我自己的问题时。

我需要触发observeEvent()才能执行removeNotification()并在选项卡之间切换时删除所有警告窗口。

我想象的方式是这样的:

    observeEvent(input$tabSwitch, {
        removeNotification(previous.warning.message)
    })

但是,没有办法使切换制表符成为eventExpr,从而使上面的代码易于执行

如果有人做到这一点或对如何做到这一点有所了解,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

正如评论中已经提到的那样,您必须为id提供一个tabsetPanel

这是一个有效的示例:

library(shiny)

ui <- fluidPage(
  mainPanel(
    tabsetPanel(id = "tabSwitch",
      tabPanel("Tab 1", br(), "Tab 1 content"),
      tabPanel("Tab 2", br(), "Tab 2 content"),
      tabPanel("Tab 3", br(), "Tab 3 content")
    ), br(),
    actionButton("warningBtn", "Generate Warning")
  )
)

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

  observeEvent(input$warningBtn, {
    showNotification(ui = paste(Sys.time(), " - Warning!"), duration = NULL, closeButton = FALSE, id = "previousWarningMessage", type = "warning")
  })

  observeEvent(input$tabSwitch, {
    print(paste("You clicked tab:", input$tabSwitch))
    removeNotification("previousWarningMessage")
  })
}

shinyApp(ui, server)