Shiny:有没有办法通过在tabsPanel()之间切换来触发observeEvent()

the*_*eil 4 notifications tabs r shiny

我正在开发一个闪亮的应用程序,我想知道是否有可能,或者其他人是否能够通过observeEvent()tabPanel().

tabPanel()由于@SriPaladugu代码和@DeanAttali闪亮js包,我有启用和禁用一旦执行某些操作的经验,但在回答我自己的问题时,我不知道这两种方法/包的范围。

我需要触发一个observeEvent()以便removeNotification()在选项卡之间切换时执行和删除任何警告窗口。

我想象的这样做的方式是这样的:

    observeEvent(input$tabSwitch, {
        removeNotification(previous.warning.message)
    })
Run Code Online (Sandbox Code Playgroud)

但是,没有办法使切换选项卡成为 eventExpr 从而使上面的代码可执行

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

ism*_*gal 6

正如评论中已经提到的,您必须idtabsetPanel.

这是一个工作示例:

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)
Run Code Online (Sandbox Code Playgroud)